[英]Comparing elements in arrays
我被困在一个数据结构类的java赋值的一个组件上,这阻止了我完成其余部分。 这是一个简单的概念,但我在实现中遗漏了一些东西。 我有一个名为list1
的Dynamic array
list1
,我需要将它与另一个列表( list2
)进行比较。 我有一个方法: equals(Object a)
所以调用是list1.equals(list2);
我知道如何比较列表与迭代器,但如何引用list1
对象来比较两者?
我不是要求你完成我的任务,只是帮助我理解这是如何工作的。
public static void main(String args[])
{
DynamicArrayOfInts list1 = new DynamicArrayOfInts();
}
public DynamicArrayOfInts()
{
storage = new int[INITIAL_CAPACITY];
size = 0;
}
public boolean equals(Object aThat)
{
if(aThat.equals(storage))
return true;
else
return false;
}
你应该做这样的事情:
public boolean equals(Object obj)
{
if(obj == null) return false;
if(obj.getClass() != DynamicArrayOfInts.class) return false;
DynamicArrayOfInts other = (DynamicArrayOfInts) obj;
/*compare this.storage to other.storage with the iterator
or with simple indexing.*/
}
我想你是说你在equals
方法中进行比较。 如果是这样,则需要将参数a
转换为列表。 所以
public boolean equals(Object a) {
MyList list1 = (MyList) a;
...
}
行MyList list1 = (MyList) a
表示“将引用a
视为对MyList
实例的引用,并将其分配给引用list1
。
equals
通常使用一个Object
因此您可以将(几乎)任何内容传递给equals
。 根据具体情况,您可以做的第一件事是检查参数的类型为equals
,如果没有机会相等则返回false。
看看我在intertubes上找到的这个例子 。 你在他们的例子中看到的第一件事是
if ( this == aThat ) return true;
if ( !(aThat instanceof Car) ) return false;
做这样的事情可以让你快速返回,如果比较是微不足道的。 例如,一个实例与自身相等的重言式; 没有办法不可能是真的。
在equals方法中,您可以使用this
运算符来代替nae list1
来访问list1
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.