今天做java开发需要比较两个自定义的对象的大小,发现直接比较会有问题,先说明如下:
开始时对象是这样定义的:
public class DataCompose {
int length;
int index;
int start;
String data;
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public int getStart() {
return start;
}
public void setStart(int start) {
this.start = start;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public DataCompose() {
}
}
我把可能“相等”的对象装进一个ArrayList中,然后在装载一个对象实例之前用Contains方法判断list中是否含有相等实例,结果令我失望的是无法赛选出相等的实例。
后来我想到String类中判断两个String实例是否相等时,重写了String类的equals方法,我也试着重写了DataCompose类,代码如下:
public class DataCompose extends Object {
int length;
int index;
int start;
String data;
public int getLength() {
return length;
}
public void setLength(int length) {
this.length = length;
}
public int getIndex() {
return index;
}
public void setIndex(int index) {
this.index = index;
}
public int getStart() {
return start;
}
public void setStart(int start) {
this.start = start;
}
public String getData() {
return data;
}
public void setData(String data) {
this.data = data;
}
public DataCompose() {
}
@Override
public boolean equals(Object arg0) {
DataCompose o = (DataCompose) arg0;
if ((this.index == o.index) && (this.data.equals(o.data))) {
return true;
} else {
return false;
}
}
}
结果惊喜出现了!