簡體   English   中英

List包含對象的方法

[英]List contains method for object

我試圖理解contains()以及Object類的equals和hashCode方法

下面是我的Test1課程

public class Test1 {

    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result
                + ((favoriteUID == null) ? 0 : favoriteUID.hashCode());
        return result;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (!(obj instanceof Test1)) {
            return false;
        }
        Test1 other = (Test1) obj;
        if (favoriteUID == null) {
            if (other.favoriteUID != null) {
                return false;
            }
        } else if (!favoriteUID.equals(other.favoriteUID)) {
            return false;
        }
        return true;
    }

    private String favoriteUID;

    public String getFavoriteUID() {
        return favoriteUID;
    }

    public void setFavoriteUID(String favoriteUID) {
        this.favoriteUID = favoriteUID;
    }
}

那是我的主要課程

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class FavoriteMain 
{

    public static void main(String[] args) 
    {

        Test1 obj1 = new Test1();
        obj1.setFavoriteUID("1");

        Test1 obj2 = new Test1();
        obj2.setFavoriteUID("1");

        List<Test1> list1 = new ArrayList<Test1>();
        list1.add(obj1);
        list1.add(obj2);

        List<Test1> list2 = new ArrayList<Test1>();
        list2.add(obj1);

        System.out.println(obj1.equals(obj2 ));
        System.out.println(list1.contains(list2));
}
}

輸出是

true
false

我嗡嗡聲,為什么我變得虛假,甚至我的hashCode和equals方法都正常工作。 這就是為什么我的equals方法返回true的原因。

任何輸入都會有所幫助。

謝謝 !!!

因為contains(Object o); 將查找列表中的對象,為了返回true,您需要添加列表本身 ,這沒有多大意義。 如果你改為使用list1.contains(obj1); 當然,你會得到真實,因為列表中存在該實際對象。

你可以使用containsAll(Collection<?> c); 這將獲取一個列表並檢查提供的列表中的所有元素是否都存在於被調用的列表中。

暫無
暫無

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

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