黑马程序员技术交流社区

标题: 集合中关于remove方法的疑问,求解 [打印本页]

作者: 彭坤    时间: 2012-2-10 14:11
标题: 集合中关于remove方法的疑问,求解
本帖最后由 彭坤 于 2012-2-11 11:42 编辑

import java.util.ArrayList;
import java.util.List;

public class TestRemoveFromList {
       
        public static void main(String[] args) {
                List<Person> personList = new ArrayList<Person>();
                personList.remove(new Person("张三",18));
        }
}

class Person{
        private String name;
        private int age;
       
        public Person(String name, int age) {
                this.name = name;
                this.age = age;
        }       
        public String toString() {
                return "姓名:"+name + ",年龄:"+ age;
        }
}

疑惑的是personList里面是空的,为什么我从里面移除一个对象没报错?
作者: 张伟~    时间: 2012-2-10 14:34
boolean remove(Object o)
          从此列表中移除第一次出现的指定元素(如果存在)
也就是说如果你要移除的元素如果在则移除,并返回true,这个要移除的元素不在就放回false
System.out.println( personList.remove(new Person("张三",18)));//打印false
作者: 刘丁    时间: 2012-2-10 14:54
public boolean remove(Object o) {
        if (o == null) {
            for (int index = 0; index < size; index++)
                if (elementData[index] == null) {
                    fastRemove(index);
                    return true;
                }
        } else {
            for (int index = 0; index < size; index++)
                if (o.equals(elementData[index])) {
                    fastRemove(index);
                    return true;
                }
        }
        return false;
    }

从ArrayList类中的源代码 可以看出,在删除一个数据时 会判断该对象存在不存在 。 如果存在将其删除,并返回true .如果 不存在则返回false
作者: 彭坤    时间: 2012-2-10 14:58
张伟~ 发表于 2012-2-10 14:34
boolean remove(Object o)
          从此列表中移除第一次出现的指定元素(如果存在)
也就是说如果你要 ...

回头查了一下API,确实是这么回事,谢谢
作者: 衣服    时间: 2012-2-10 19:19
只是true或false 并不一定报错




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2