判断List中是否含有某个实体bean
2024-09-01 01:25:39
注意:使用List.contains(Object object)方法判断ArrayList是否包含一个元素对象(针对于对象的属性值相同,但对象地址不同的情况),如果没有重写List的元素对象Object中的equals方法,将导致contains方法始终返回false。
查看ArrayList的contains方法的源码如下:
@Override public boolean contains(Object object) {
Object[] a = array;
int s = size;
if (object != null) {
for (int i = 0; i < s; i++) {
if (object.equals(a[i])) {
return true;
}
}
} else {
for (int i = 0; i < s; i++) {
if (a[i] == null) {
return true;
}
}
}
return false;
}
可以看出,contains方法依据Object的equals方法来判断是否包含某一元素,继续查看Object类中的equals方法,源码如下:
public boolean equals(Object o) {
return this == o;
}
所以,使用“==”比较对象的地址,如果是同一对象即地址相同的情况下,才会返回true,而对于对象属性值相同但地址不同的不同对象,始终返回false!
如果需要依据对象属性值是否相同来判断ArrayList是否包含某一对象,则需要重写Object的equals方法,并在equals方法中一一比较对象的每个属性值,如:
public class Student { private Integer id; private String name; public Integer getId() {
return id;
} public void setId(Integer id) {
this.id = id;
} public String getName() {
return name;
} public void setName(String name) {
this.name = name;
} @Override
public boolean equals(Object object) { if (this == object) {
return true;
}
if (object instanceof Student) {
Student student = (Student) object;
return this.id.equals(student.id)
&& this.name.equals(student.name);
}
return super.equals(object);
}
}
如果该类中某属性是其它类对象,则还需进一步重写该类的equals方法!!
equals方法可通过eclipse中 shift+alt+s自动生成
最新文章
- MFC 自绘按钮 消息响应
- Spring回调方法DisposableBean接口
- vim - multiple windows
- WPF Caliburn.Micro ListView 批量删除 新方法.高效的
- Mininet实验 OpenFlow1.3协议基于Mininet部署与验证
- iOS数据库之查找功能的实现
- 添加“返回顶部”小图标按钮的JS(JavaScript)代码详解
- dropDownList之";请选择";,同时设置默认选项
- docker学习笔记16:Dockerfile 指令 ADD 和 COPY介绍
- ResultSet取结果集多少条记录方法及分页概要
- yaourt 之 Curl 错误
- iOS开发从申请账号到上线APP Store步骤
- Servlet与Jsp的结合使用实现信息管理系统一
- 【Tarjan缩点】POJ2186 Popular Cows
- master_pos_wait函数与MySQL主从切换
- 【java开发系列】—— 集合使用方法
- NetSNMP开源代码学习——小试牛刀
- 封装的head
- python(一)——初识与变量
- Instrumentation 功能介绍(javaagent)