两个Vector<classA> vecA
Vector<classA> vecB要判断vecA和vecB中的内容是否相同(比较的是内容,不是地址)开始用了Object.equals函数,后来发现,这个函数比较的好像是地址。
故在classA中自己实现了equals函数。可是现在调用 vecA.equals(vecB);似乎,系统没有调用Vector.equals中没有调用classA.equals判等。想请教两个问题
1、一般情况下,两个自定义类的Vector如果判断内容是否相等一般怎么实现。
2、按我目前的方法,如果要判断两个Vector内容是否相等,应该怎样做呢?
谢谢
Vector<classA> vecB要判断vecA和vecB中的内容是否相同(比较的是内容,不是地址)开始用了Object.equals函数,后来发现,这个函数比较的好像是地址。
故在classA中自己实现了equals函数。可是现在调用 vecA.equals(vecB);似乎,系统没有调用Vector.equals中没有调用classA.equals判等。想请教两个问题
1、一般情况下,两个自定义类的Vector如果判断内容是否相等一般怎么实现。
2、按我目前的方法,如果要判断两个Vector内容是否相等,应该怎样做呢?
谢谢
只是在楼主看来,
vector1: 1,2,3
vector2: 1,3,2这两个vector算不算相等
是不是因为这个函数判断的也是类的指针呢?
中有这样一段话:
“
EqualsBuilder的append()方法可以接受基本类型、对象、数组作为参数。EqualsBuilder强大的地方在于可以直接把数组作为参数传入append()方法,EqualsBuilder会依次比较数组中的每个元素。”
INTE(int in){
x = in;
}
public int x;
public void setint(int in){
x = in;
}
public Object clone()
{
Object o=null;
try
{
o=super.clone();
}
catch(CloneNotSupportedException e)
{
System.out.println(toString());
}
return o;
}
public boolean equals(INTE B){
if(this.x == B.x){
return true;
}
else{
return false;
}
}
}
main(){
Vector<INTE> vecUserA = new Vector();
Vector<INTE> vecUserB = new Vector();
// 如果这样深拷贝,下面打印false
// for(int i = 0; i<vecUserA.size(); ++i){
// vecUserB.add((INTE)vecUserA.get(i).clone());
// } //如果这样浅拷贝,则打印true
vecUserB.addAll(vecUserA);
System.out.println(vecUserA.containsAll(vecUserB));
System.out.println(vecUserB.containsAll(vecUserA));}我就想问问,如果这样深拷贝,要如何判等呢