直接比较两个对象是否相等返回false和List中判断是否包含某个对象的问题
2014-09-07 19:11
567 查看
定义如下类
class GG{
private String name;
public GG(String name){
this.name=name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
}
再定义两个对象
GG g1=new GG("1");
GG g2=new GG("2");
如果直接进行比较:g1===g2将会返回false因为这样比较的是二者的引用。
这里我们现在需要重写equals 和 hashCode 方法;
class GG{
private String name;
public GG(String name){
this.name=name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
GG other = (GG) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
通常我们所用的String类型不用重写,可以直接用。
这两个方法可以通过myEclipse自动生成
class GG{
private String name;
public GG(String name){
this.name=name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
}
再定义两个对象
GG g1=new GG("1");
GG g2=new GG("2");
如果直接进行比较:g1===g2将会返回false因为这样比较的是二者的引用。
这里我们现在需要重写equals 和 hashCode 方法;
class GG{
private String name;
public GG(String name){
this.name=name;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((name == null) ? 0 : name.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
GG other = (GG) obj;
if (name == null) {
if (other.name != null)
return false;
} else if (!name.equals(other.name))
return false;
return true;
}
}
通常我们所用的String类型不用重写,可以直接用。
这两个方法可以通过myEclipse自动生成
相关文章推荐
- 关于直接比较两个对象是否相等或则说List集合里是否包含某个对象的问题
- Java为什么两个值相等的对象==比较返回false而两个值相等的不同类型的的基本数据类型返回true
- C#中??和?分别是什么意思? 在ASP.NET开发中一些单词的标准缩写 C#SESSION丢失问题的解决办法 在C#中INTERFACE与ABSTRACT CLASS的区别 SQL命令语句小技巧 JQUERY判断CHECKBOX是否选中三种方法 JS中!=、==、!==、===的用法和区别 在对象比较中,对象相等和对象一致分别指的是什么?
- Java 对象之间的比较,判断两个对象的某一个属性相等,则对象相等
- 默认的Equals并非是判断两个对象相等,而是判断是否是同一引用
- Java 比较两个 List 的值是否相等
- Collection判断两个对象是否相等
- 判断比较两个对象是否是一个对象(equals方法)
- python判断两个对象是否相等
- 如何比较两个二维数组是否相等 - 回复 "阿拉丁" 的问题
- 详解JS 比较两个Json对象的值是否相等的实例
- List集合判断两个对象相等的标准
- java 比较两个对象是否相等
- 深入java的equals方法,怎么比较两个对象的内容是否相等?对象的内容指的是什么?
- 判断两个对象是否相等
- 为什么两个不确定值的浮点数无法直接比较是否相等
- 比较一个对象list中的id值和List<Integer>的值是否相等
- 判断两个(float)变量x,z是否相等 以及和0值比较方法
- 验证是否是类,对象是否对消息有回复,是否是接口,,比较两个对象是否相等,复制对象
- java 对象比较 判断两个对象的某些或某个属性相同 这对象相等。