1. 程式人生 > >Java 判斷集合中是否存在某個元素(contains())

Java 判斷集合中是否存在某個元素(contains())

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