contains方法解析
深入Collection集合的contains方法
- boolean contains(Object o) 如果此集合包含指定的元素,则返回 true
- contains方法是用来判断集合中是否包含某个元素的。
- 它在底层调用了equals方法进行比对。
public class CollectionTest04 {
public static void main(String[] args) {
//创建集合对象
Collection c = new ArrayList();
//向集合中存储元素
String s1= new String("abc");
c.add(s1);
String s2 = new String("def");
c.add(s2);
//创建新的对象
String x = new String("abc");
//集合中是否包含X?
System.out.println(c.contains(x));//判断集合中是否包含“abc”,true,contains底层使用了equals()
}
}
Collection接口中remove方法和contains方法底层都会调用equals方法。它们都需要重写了equals方法。
/*
* 测试contains方法
* 结论:存放在一个集合中的类型,一定要重写equals方法。
* */
public class CollectionTest05 {
public static void main(String[] args) {
//创建集合对象
Collection c = new ArrayList();
//创建用户对象
User u1=new User("jack");
User u2=new User("jack");
c.add(u1);
//判断集合中是否包含u2
// System.out.println(c.contains(u2));//false,没有重写equals方法
System.out.println(c.contains(u2));//true,重写了equals方法,比较多的时候会比较内容
Integer x=new Integer(10000);
c.add(x);
Integer y=new Integer(10000);
System.out.println(c.contains(y));//true
//Integer类中equals方法重写了
Collection cc = new ArrayList();
String s1 = new String("hello");
cc.add(s1);
String s2 = new String("hello");
cc.remove(s2);// remove中也调用了equals方法
System.out.println(cc.size());//0个元素
}
}
class User{
private String name;
public User(){}
public User(String name){
this.name=name;
}
//重写equals方法
//将来调用equals方法的时候,一定是调用这个重写的equals方法。
//这个equals方法的比较原理是:只有姓名一样就表示同一个用户。
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return Objects.equals(name, user.name);
}
}
标签:Java,String,contains,equals,User,new,解析,方法
From: https://www.cnblogs.com/shijili/p/18002267