1. 程式人生 > 其它 >java判斷list中是否包含有某一元素

java判斷list中是否包含有某一元素

在我的專案中,有很多地方會用到這一功能,在此將知識點記錄一下:
List 有一個叫contains的方法用來判斷List中是否已經有這個值:
以下三種方式都可進行判斷,原理如下:

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值確實包含引數物件。因此,需要重寫Student類的equals()方法。

 

程式設計師可以根據自己的實際情況進行選擇。