關於hashcode
hashset的使用
簡單的來說,就是,如果兩個物件的所有值都相同(hashcode值相同),那麼就開始判斷equals方法是否為false,如果為false就判定這兩個物件不是重複的,如果為true就判斷是重複的,即:
先判斷hashcode值是否相同(物件中的元素是否有不同的,有的話就是不同,都相同就相同),然後再判斷equals是否相同(重寫之後的equals方法,通過比較物件引用是不是為空,當前引用的getclass方法是不是滿足,還有物件的所有屬性是否相同),如果相同,就返回true,否則就返回false,理解這麼多就夠了。具體比較hashcode的方法,看**(比較方法:設初始值為31,數字初始值為1,將數字的值加一起然後再判斷字段是否為空,為空的話就+0,否則就加上字段值(欄位的hashcode()方法返回的是乙個整數,也就是這個欄位的位址值),然後結果就是hashcode值)
set:
特點:無序,不重複,沒有整數索引
hashset的add方法查詢不能去重的原因
1.檢視hashcode值是否相等
2.檢視位址是否相等
3.檢視equals值是否相等
重寫hashcode()方法和equals()方法去實現hashset儲存自定義物件時的去重
collections工具類的查詢方法:
1.static int binarysearch(list list,object key):用於查詢元素的位置,注意,被查詢的集合必須是有序的(set不能用)
2.static void copy(list dest,list src):用於列複製,後面的複製到前面
3.static void fill(list list,object obj);用於填充,將list中的元素全部替換成obj
4.static void reserve(list list);反轉,將list列的值的順序反過來
5.static void shuffle(list list);隨機置換,將整個list的元素隨機換位置(實現洗牌)
6.static void sort(listlist);將list中的元素按自然順序排列(list中為基本型別)
7.static void swap(list list,int i,int j);將list中指定的兩個索引位置的值互換
map的增刪查
1.新增 v put(k key,v value);返回值是v
2.刪除 void clear();
3.查詢 v get(object key);
int size();
4.判斷 boolean containskey(object key);
boolean containsvalue(object value);
boolean isempty();
5遍歷:
1.用set儲存鍵值(因為set不允許重複),然後用collection儲存對應值(因為collection允許出現重複)
2.用map的entry方法,eg:set> entrys = map物件.entryset();
總結:1.單列集合從上到下依次為:collection(根集合)--->list(arraylist,linkedlist(沒講)),set(hashset,linkedhashset(沒講))
雙列集合從上到下依次為:map--->hashmap,linkedhashmap(沒講)
2.list和set的區別:list為有序的可重複的集合,set為無序的不可重複的集合,並且沒有整數索引
3.因為set是介面,所以用多型建立hashset的物件,而hashset實際上是hashmap的包裝類,其本質是hashcode()
4.使用hashset的時候重寫equals()和hashcode()的方法
4.set和map的相同點和不同點
相同點:都是集合,底層實現都是hashcode();
不同點:set只有乙個獲取鍵值的方法,但是map有對應的hash錶值,有自己的獲取key和value的方法,map可以用entry遍歷
5.linkedlist底層是鍊錶,增刪快查詢慢,arraylist底層是陣列,查詢快增刪慢
6.hashmap和set之間的聯動
hashmap的keyset()返回的是set的對映檢視(就是set集合),將hashmap中的鍵存入set中
7.collections工具類是專門為list介面提供的,同時,被介面實現的類也能使用,包括增刪改查的方法
python基礎 set集合
set集合是乙個無序且不重複的元素集合 1.set的建立 2種方式 se se set 11,22,33 呼叫的set 的 init 方法進行建立 2.set的常用方法 1.add se se.add 44 print se 因為是無序的,所以執行的結果會不一樣,但是 44確實被增加到了原 set集...
python基礎 集合set
二 集合常用函式 三 集合的新增元素 四 集合的刪除元素 五 集合的複製元素 集合和列表非常相似 不同點 1.集合中只能儲存不可變物件 2.集合中儲存的物件是無序 不是按照元素的插入順序儲存 3.集合中不能出現重複的元素 重複的元素會自動過濾掉 s s typeerror unhashable ty...
Python基礎 set集合
python的set和其他語言類似,是乙個無序不重複元素集,基本功能包括關係測試和消除重複元素.集合物件還支援union 聯合 intersection 交 difference 差 和sysmmetric difference 對稱差集 等數 算.sets 支援 x in set,len set ...