Collection的contains和remove方法注意点
- 存储到集合的元素一定要重写equals方法,否则contains比较的是内存地址是否一致
public class CollectionTest3 {
public static void main(String[] args) {
Collection c = new ArrayList();
String s1 = new String("abc");
String s2 = new String("abc");
c.add(s1);
boolean contains = c.contains(s2);
//虽然集合c里确实不包含s2元素
//但是contains底层调用了equals方法,而s2是String类型,它的equals方法比较的是内容是否一致
System.out.println(contains);//true
//同理,remove方法底层也调用了equals方法
c.remove(s2);
System.out.println(c.size());//0
User u1 = new User("jqc");
User u2 = new User("jqc");
c.add(u1);
boolean contains1 = c.contains(u2);
//因为User没有重写equals方法,所以比较的是内存地址
System.out.println(contains1);//false
c.remove(u2);
System.out.println(c.size());//1
}
}
class User {
private String name;
public User(String name) {
this.name = name;
}
}
我成功因为我志在成功
浙公网安备 33010602011771号