Java进阶-contains 源码分析 发表于 2020-05-23 | 分类于 Java | 字数统计: 250 字 | 阅读时长 ≈ 1 分钟 存放在一个集合中的类型,一定要重写 equals 方法 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051import java.util.ArrayList;import java.util.Collection;public class CollectionTest04 { public static void main(String[] args) { // 创建集合对象 Collection c = new ArrayList(); // 创建用户对象 User u1 = new User("Jack"); // 加入集合 c.add(u1); // 判断集合中是否包含u2 User u2 = new User("Jack"); // 没有重写 equals之前,这个结果是 false // System.out.println(c.contains(u2)); // false // 重写 equals 方法后,比较的是 name System.out.println(c.contains(u2)); // true Integer x = new Integer(100); c.add(x); Integer y = new Integer(100); System.out.println(c.contains(y)); // true }}class User { private String name; public User() { } public User(String name) { this.name = name; } // 重写 equals 方法 // 将来调用 equals 方法的时候,一定是调用这个重写的 equals 方法 public boolean equals(Object o) { if (o == null || !(o instanceof User)) return false; if (o == this) return true; User u = (User) o; // 如果名字一样表示同一个人,不再比较对象的内存地址,比较内容 return u.name.equals(this.name); }}