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)));//true
System.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;
}
@Override
public 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;
// }
@Override
public 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);
}
@Override
public int hashCode() {
return Objects.hash(name, age);
}
}