簡體   English   中英

如何在兩個對象的java等式中評估列表

[英]How to evaluate list in java equality of two object

我有一個arrayList,我想使用contains(Thing o)方法檢查這兩個對象的相等性,我重寫了Thing類中的equals()方法但是當我調用contains方法時這不起作用! 這是我的課程:

public class Thing{

private int id;

//getter setter

@Override
public boolean equals(Object o) {
    if(!(o instanceof Thing))
        return false;
    if(id == ((Thing)o).getId())
        return true;
    return false;
}
}

是否有必要覆蓋hashCode()方法? 如果是,如何覆蓋它?

你應該覆蓋hashCode ArrayList類不使用hashCode方法,因此現在不需要,但是如果您在任何時候使用HashMapHashSet或任何其他使用hashCode集合,那么程序將因為hashCodeequals中斷不一致

對於這種情況,hashCode的簡單實現可以是:

public int hashCode() {
    return id;
}

是的,每當你重寫equals時,必須覆蓋hashCode():

  • 如果不重寫HashCode(),則“Object”類的默認行為是為每個對象提供唯一的hashCode。

  • 這個唯一的hashCode意味着兩個不同的對象實例,除非
    你重寫hashCode()來給出相同的值。

    public int hashCode(){return this.id; }

當你使用Eclipse時,你不必手動編寫這個。:)打開java文件的RightCLick - > Source - > Generate HashCode()和equals()

如果你重寫equals(),你也應該總是覆蓋hashCode()。 通過使用Eclipse IDE,您只需為您生成該方法。 菜單 - >源 - >生成hashCode()和equals()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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