[英]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.