簡體   English   中英

比較數組中的元素

[英]Comparing elements in arrays

我被困在一個數據結構類的java賦值的一個組件上,這阻止了我完成其余部分。 這是一個簡單的概念,但我在實現中遺漏了一些東西。 我有一個名為list1Dynamic 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM