ArrayList中有一个方法:Contains用来判断是否有重复的元素
boolean Contains(Object o) - 判断集合中是否有指定的元素
为了实现这个功能,我们需要新建一个实体类,是Object的子类,具备了equals方法
Contains方法会调用参数的equals方法
equals方法默认的比较对象的方式是比较地址值,也就是 ==
**
重写equals方法的目的是为了比较两个对象像不像
/***ArrayList中有一个方法:contains用来判断是否有重复的元素*/package Test18_Demo.Demo07;/*@create 2020--12--08--14:19*/import java.util.ArrayList;public class ArrayListContainsDemo {public static void main(String[] args) {//创建集合ArrayList<String> list = new ArrayList<>();//添加元素list.add("Jack");list.add("Tom");list.add("Lucy");//判断 - 大小写敏感System.out.println(list.contains("Jack"));System.out.println("===============");//对象比较ArrayList<Person> list2 = new ArrayList<>();list2.add(new Person("宋远桥",45));list2.add(new Person("俞莲舟",40));list2.add(new Person("张翠山",32));//equals方法默认的比较对象的方式是比较地址值,也就是 ==System.out.println(list2.contains(new Person("宋远桥", 45)));//trueSystem.out.println(list2.contains(new Person("宋远桥1", 45)));//false - 比较的是地址值}}
package Test18_Demo.Demo07;/*@create 2020--12--08--14:23*/import javax.naming.PartialResultException;import java.util.Objects;public class Person {private String name;private int age;public Person() {}public Person(String name, int age) {this.name = name;this.age = age;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}@Overridepublic String toString() {return "Person{" +"name='" + name + '\'' +", age=" + age +'}';}// //重写equals方法// @Override// public boolean equals(Object object) {// //直接拿到父类中的equals方法//// System.out.println("equals方法被调用了");//// //this:表示contains方法的参数// //object:集合中原有的对象// //将Object类型的object强制转换了子类型// Person otherP = (Person) object;//// //重写比较规则// //比较的是当前的对象的属性:名字,年龄// if (!this.getName().equals(otherP.getName())) {// return false;// }// if (this.getAge() == otherP.getAge()) {// return false;// }// //如果上面两个都不是false,则返回true//// return true;// }@Overridepublic boolean equals(Object o) {if (this == o) return true;if (o == null || getClass() != o.getClass()) return false;Person person = (Person) o;return age == person.age &&Objects.equals(name, person.name);}@Overridepublic int hashCode() {return Objects.hash(name, age);}}

