contains:
- 深入Collection中的contains方法:
boolean contains(Object o)
判断集合中是否包含某个对象o
如果包含返回true,不包含返回false - contains方法是用来判断集合中是否包含某个元素的方法
那么它在底层是怎么判断集合中是否包含某个元素的呢?
调用了equals()方法
import java.util.ArrayList;
import java.util.Collection;
import java.util.Objects;
public class CollectionTest03 {
public static void main(String[] args) {
Collection collection = new ArrayList();
String s1 = new String("abc");
collection.add(s1);
String s2 = new String("def");
collection.add(s2);
String x = new String("abc");
System.out.println(collection.contains(x));
User user = new User("jack");
User user1 = new User("jack");
System.out.println(user.equals(user1));
Integer i1 = 10000;
collection.add(i1);
Integer i2 = 10000;
System.out.println(collection.contains(i2));
}
}
class User{
String name;
public User() {
}
public User(String name) {
this.name = name;
}
@Override
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);
}
}
- 上述例子的内存分析:
![在这里插入图片描述](https://i-blog.csdnimg.cn/blog_migrate/dc6c17da7045834b9735c98ad47e6f4e.png)
remove:
- 和contains一样,remove源码也调用了equals方法
import java.util.ArrayList;
import java.util.Collection;
import java.util.Iterator;
public class CollectionTest04 {
public static void main(String[] args) {
Collection c = new ArrayList();
String s1 = new String("ABC");
String s2 = new String("DEF");
c.add(s1);
c.add(s2);
String x = new String("ABC");
System.out.println(c.remove(x));
System.out.println("=================================");
Iterator it = c.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
true
=================================
DEF