您的位置:首页 > 编程语言 > Java开发

java 集合(1)equals 和 ArrayList的remove 联系 && instanceof 关键字

2015-12-28 20:41 501 查看
1.Object 的equals()是 == ,即纯相等

2.String Integer的equals(),是被改写的,即值相等

3.ArrayList的remove(),是判断是否equals(), 即Object 的,那么

4.泛型作用

Collection c = new ArrayList<Iplong>();
c.add("hello");  //这句可以正常执行,但是下面这句add()不能正常执行 Collection<Iplong> c = new ArrayList<Iplong>();c.add("hello");
c.add(new Iplong("li","jia"));
c.remove(new Iplong("li","jia"));
以下结果是:

c.size() is 2
[hello, test.java.Iplong@5c3a5635]


上面程序改为

ArrayList c = new ArrayList<Iplong>();
c.add("hello");//可以执行,但是下面这句add()不能正常执行
ArrayList <Iplong> c = new ArrayList<Iplong>();
c.add("hello");
c.add(new Iplong("li","jialia"));

如果想直接删掉这个对象,可以重写object 类的 equals() 方法

//remove 谁,就是collection里的元素o,调用o.equals(谁)
public boolean equals(Object obj){
if(obj instanceof Iplong){
Iplong iplong = (Iplong)obj;
return firstName.equals(iplong.firstName)
&& lastName.equals(iplong.lastName);
}
return super.equals(obj);
}
则以上代码结果是:

c.size() is 1
[hello]

也可以用引用而不是匿名对象

Collection c = new ArrayList<Iplong>();
c.add("hello");
Iplong name1 = new Iplong("li","jia");
System.out.println(name1.hashCode());//一直在变
c.add(name1);
c.remove(name1);
System.out.println(c.size());
System.out.println(c);
执行结果是:

1
[hello]

这里的equals方法和hashcode方法有关系,暂时不明?hashcode可以参考java
hashcode这篇文章
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: