A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 彭坤 中级黑马   /  2012-2-10 14:11  /  1616 人查看  /  4 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 彭坤 于 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里面是空的,为什么我从里面移除一个对象没报错?

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

4 个回复

倒序浏览
boolean remove(Object o)
          从此列表中移除第一次出现的指定元素(如果存在)
也就是说如果你要移除的元素如果在则移除,并返回true,这个要移除的元素不在就放回false
System.out.println( personList.remove(new Person("张三",18)));//打印false

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
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

评分

参与人数 1技术分 +1 收起 理由
admin + 1

查看全部评分

回复 使用道具 举报
张伟~ 发表于 2012-2-10 14:34
boolean remove(Object o)
          从此列表中移除第一次出现的指定元素(如果存在)
也就是说如果你要 ...

回头查了一下API,确实是这么回事,谢谢
回复 使用道具 举报
只是true或false 并不一定报错
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马