List对象的contains方法实际上也是调用的equals()方法来进行逐条对比的。

示例代码:
package com.imooc.collection;
/**
* 课程类
*/
public class Course {
private String id;
private String name;
public Course(){
}
public Course(String id, String name) {
this.id = id;
this.name = name;
}
public void setId(String id){
this.id = id;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public String getName() {
return name;
}
/**
* 重写 Course类的 Equals方法
* @param obj
* @return
*/
@Override
public boolean equals(Object obj){
if(this == obj) {
return true;
}
if(obj == null) {
return false;
}
if(!(obj instanceof Course)){
return false;
}
Course course = (Course) obj;
if(this.name.equals(course.name) && this.id.equals(course.id)) {
return true;
}
return false;
}
}
Set对象的contains方法跟List实现方式不一样,是先调用hashCode()方法返回hash码,如果hash码一致,再调用equals()方法。

@Override
public int hashCode() {
return Objects.hash(name);
}
本文详细解析了List和Set集合中contains方法的工作原理,包括如何通过equals和hashCode方法进行元素对比,以及它们在不同集合类型中的实现差异。
867

被折叠的 条评论
为什么被折叠?



