List 有方法contains可以判斷出List中是否已經有這個值。
如果想去重復可以使用HashSet去重復。
List<String> list = new ArrayList<String>(new HashSet<String>(a));
1.List的contains(obj)方法
實際上,List調用contains(Object obj)方法時,會遍歷List中的每一個元素,然后再調用每個元素的equals()方法去跟contains()方法中的參數進行比較,如果有一個元素的equals()方法返回true則contains()方法返回true,否則所有equals()方法都不返回true,則ontains()方法則返回false。因此,重寫了Course類的equals()方法,否則,testListContains()方法的第二條輸出為false。
2.Set的Contains(obj)方法
當調用HashSet的contains(Object obj)方法時,其實是先調用每個元素的hashCode()方法來返回哈希碼,如果哈希碼的值相等的情況下再調用equals(obj)方法去判斷是否相等,只有在這兩個方法所返回的值都相等的情況下,才判定這個HashSet包含某個元素。因此,需重寫Course類的hashCode()方法和equals()方法。
3. Map中是否包含指定的Key和Value
在Map中,用containsKey()方法,判斷是否包含某個Key值;用containsValue()方法,判斷是否包含某個Value值。
注:跟List中的Contains()方法一樣,Map中的ContainsValue()方法也需要調用某個Value值的equals()方法,去和參數對象進行比較,如果匹配成功,返回結果為true,說明在Map中的Value值確實包含參數對象。因此,需要重寫實體類的equals()方法。
原文鏈接:https://blog.csdn.net/weixin_38670122/article/details/80570956