建议46: equals应该考虑null值情景
2018-01-19 17:16
274 查看
import java.util.ArrayList;
import java.util.List;
public class Client10 {
public static void main(String[] args) {
Person p1 = new Person("张三");
Person p2 = new Person(null);
List<Person> l =new ArrayList<Person>();
l.add(p1);
l.add(p2);
System.out.println("列表中是否包含张三:"+l.contains(p1));
System.out.println("列表中是否包含张三 :"+l.contains(p2));
}
}
class Person{
private String name;
public Person(String _name){
name = _name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof Person){
Person p = (Person)obj;
if(p.getName()==null||name==null){
return false;
}else{
return name.equalsIgnoreCase(p.getName());
}
// Person p = (Person) obj;
// return name.equalsIgnoreCase(p.getName());
}
return false;
}
}
附带:ArrayList . contains 源码实现
public boolean contains(Object paramObject)
{
return indexOf(paramObject) >= 0;
}
public int indexOf(Object paramObject)
{
int i;
if (paramObject == null)
for (i = 0; i < this.size; i++)
if (this.elementData[i] == null)
return i;
else
for (i = 0; i < this.size; i++)
if (paramObject.equals(this.elementData[i]))
return i;
return -1;
}
import java.util.List;
public class Client10 {
public static void main(String[] args) {
Person p1 = new Person("张三");
Person p2 = new Person(null);
List<Person> l =new ArrayList<Person>();
l.add(p1);
l.add(p2);
System.out.println("列表中是否包含张三:"+l.contains(p1));
System.out.println("列表中是否包含张三 :"+l.contains(p2));
}
}
class Person{
private String name;
public Person(String _name){
name = _name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
@Override
public boolean equals(Object obj) {
if(obj instanceof Person){
Person p = (Person)obj;
if(p.getName()==null||name==null){
return false;
}else{
return name.equalsIgnoreCase(p.getName());
}
// Person p = (Person) obj;
// return name.equalsIgnoreCase(p.getName());
}
return false;
}
}
附带:ArrayList . contains 源码实现
public boolean contains(Object paramObject)
{
return indexOf(paramObject) >= 0;
}
public int indexOf(Object paramObject)
{
int i;
if (paramObject == null)
for (i = 0; i < this.size; i++)
if (this.elementData[i] == null)
return i;
else
for (i = 0; i < this.size; i++)
if (paramObject.equals(this.elementData[i]))
return i;
return -1;
}
相关文章推荐
- [改善Java代码]equals应该考虑null值的情景
- 覆写equals方法时不要识别不出自己,equals应该考虑null值情景
- 什么情景下应该考虑 多线程 编程来解决问题
- 在哪种情景下应该考虑使用JNDI技术
- 项目引入Solr时应该考虑的一些问题
- QtQml应用程序的性能考虑与建议
- 不错的todo建议:应该往todo-list添加什么内容
- .NET方向高级开发人员面试时应该事先考虑的问题
- 编写高质量代码改善C#程序的157个建议——建议135: 考虑使用肯定性的短语命名布尔属性
- 一个网页设计师应该考虑的9件事
- 第二条建议:遇到多个构造器参数时需要考虑构建器
- 建议10: 创建对象时需要考虑是否实现比较器
- 就是一个人写代码做软件项目也建议用版本管理器也要考虑采用异地容灾手段
- 建议128:考虑让派生类的名字以基类名字作为后缀
- 安卓和iOS移动APP开发设计应该考虑哪些问题
- 大学期间应不应该考虑兴趣?
- 互联网创业应该如何找到创意 - RethinkDB创始人Slava Akhmechet的几点建议
- 【转】支付场景测试应该考虑哪些方面
- 构建大型商务系统应该考虑的因素
- QtQml应用程序的性能考虑与建议