ArrayList al=new ArrayList();
al.add(new Person1("wang",20));
al.add(new Person1("li",20))
;这种添加方法和
ArrayList al=new ArrayList();
Person1 p1=new Person1("niao",20);
al.add(p1);有什么不一样,
前者在删除元素时必须重写equals方法而后者完全不用直接al.remove(p1)就行了;
这是为什么?
al.add(new Person1("wang",20));
al.add(new Person1("li",20))
;这种添加方法和
ArrayList al=new ArrayList();
Person1 p1=new Person1("niao",20);
al.add(p1);有什么不一样,
前者在删除元素时必须重写equals方法而后者完全不用直接al.remove(p1)就行了;
这是为什么?
解决方案 »
- webGame sns 游戏,搭建服务器,服务器设计的一个问题
- JAVA调用MSSQL2000存储过程,急
- 这里有人用nio吗?
- j2se 中怎么取模
- java程序改错
- this.setMediaLocator(new MediaLocator("music/back.mid")); 参数只能是绝对路径不能是相对路径吗?
- 关于TCP socket的通信问题。
- javaScript与javaBean的交互问题?
- 用DataExpress组件连接数据库时,如何编写鼠标双击单个纪录进行修改的鼠标事件
- 请教关于java学习的问题
- 纯真时期的解析几何,谁人能够铭记?
- ServerSocket accept的问题
后者对象名称为p1,可以直接通过p1来得到该对象。
首先来讲,这两种方式都是一样的,没有任何的不同,至于你说的删除时需要写equals方法,这是跟判断对象相等有关系。因为默认的情况下User user1 = new User("a");User user2 = new User("a");
user1.equals(user2) ===> false
因此 list .add(user1);后,调用list.remove(user2),无法删除user1,为什么?因为list会认为在集合中不存在user2这个对象。
前者在删除元素时必须重写equals方法而后者完全不用直接al.remove(p1)就行了;
前者没有引用,现在要找出那个对象的地址比较难。因为是匿名的。
所以重写equals的方法的意思是 找出 属性相同 的元素(根据你equals的匹配规则)。然后remove掉。
后者你有p1引用,就不用通过equals匹配,直接remove掉该对象,如果你重写了equals,还是根据匹配规则remove元素。