1. 程式人生 > >集合、set以及HASH

集合、set以及HASH

元素 自定義類 list 1.5 堆棧 變參 沒有 重復元素 增強

集合的數據結構
數據結構就是內存中保存輸出數據的形式,不同的數據結構會有不同的特征。
堆棧結構:先進後出 代表類(stack);應用場景:java中的方法運行時所占用的空間就是這種結構。
隊列結構:先進先出 代表類(Queue);應用場景:凡是需要排隊的地方均可使用。
數組結構:內容的賦值(增刪慢、查詢快)ArrayList;應用場景:容器的查詢次數多,修改次數少的時候可以使用;
鏈表結構:呈現鏈式鏈接(查詢慢,增刪快) 代表類:LinkedList 應用場景:增刪多,查詢少的地方可以使用。
Set集合:不包含重復元素的collectipon,更確切的說,set不包含滿足e1.equals(e2)的元素對e1和e2.並且最多包含一個null元素。
在set接口下有很多子類,常用的子類,有兩個:HashSet、LinkedHast
上述兩個集合的數據結構中都包含hash表結構;
特征:在判斷元素是否重復的時候,會先判斷元素的hash值;如果hash值一致的情況下,再次判斷equals方法;

hacode方法
自定義數據類型,必須重寫equals和hashCode方法,缺一不可!

HashSet集合的使用
Set集合的特點:不可以存放重復的元素;無序(無索引,不能保證存與去的順序一致)、最多只能存放一個null值。
LinkedHashSet集合
linkedHastSet屬於Hash子類,可以保證存取位置一致。
HashSet與list判斷元素是否重復的規則:
調用參數對象的hashCode方法,得到hash值;如果hash值與集合中已經存在的任何一個對象的hash值不一致時,直接返回false;
如果參數對象的hash值與集合中其中一個對象的hash值一致時,需要再次使用equals方法確認,如果equals方法得到true,說明兩個對象一致;如果equals方法得到false,說明兩個方法不相等;

HastSet的Contains方法:
比較的時候,直接通過參數對象 的hash值比較一次,再通過equals方法再確認一次即可;
list的contais方法:
比較的時候,按照比較的順序逐次與參數比較,值到比完或比對成為止,效率低!

MAP

特點:1、map集合中的鍵不允許重復。2、每個鍵最多只能映射一個值。3、null也可以作為鍵和值使用。4、Map集合中值都是以鍵值對的形式存在,因此創建對象的時候,需要傳遞兩個參數的值
MAP集合的常見子類
1、hashMap;2、LinkedHashMap(是hashMap的子類,可以保證存值和取值的順序一致)
HashMap的構造方法和常用方法
構造:空參構造和傳遞一個map集合的構造
常用方法:
put(K,V)添加鍵值對,若map中已經包含了指定的key時,會使用新得value覆蓋原來的value值。
remove(K)移除
get(K)通過鍵查詢值
clear()、containsKey()、containsValue()、size()、values()獲取所有的value值以單列集合存在等。
HashMap集合叠代方式1-鍵找值;
1、面向map集合對象,獲取map中所有的鍵組成的一個單列集合,這個單列集合是Set;(Map的keySet方法)
2、使用增強for叠代set集合,可以獲取每一個key的值;(增強for)
3、面向map集合,根據每一個key的值從map中獲取對應的value的值;(map的get方法)
HashMap集合叠代方式2--鍵值對對象
1、面向map集合,獲取所有的鍵值對對象組成的一個set集合;(map的entryset方法)
2、使用增強for叠代set集合,獲取每一個鍵值對對象;(增強for)
3、面向鍵值對對象分別獲取key和value;(Entry的getKey和getValue)
涉及到的API:map中的方法(entrySet方法)
LinnkedHashMap
HashMap存放自定義類型的key
結論:需要對Key的數據類型進行重寫hahCode方法和equals方法。
可變參數:可變參數的實質就是一個數組,可以使用操作數組的方式來操作可變參數;可變參數只允許在方法的參數列表中使用。
格式:
修飾符 返回值類型 方法名(數據類型...參數名){

}
可變參數的好處:
1、可變參數是jdk1.5之後出現的新特性;
2、可變參數的實質就是數組,不能與數組的方法形成重載;
3、如果參數列表中出現多個形參時,可變參數必須放在最後邊;
好處:對於方法的調用者可以傳用任意多個參數!
ProPerties集合
ProPerties是hashTable的子類,是map的孫子類;map中的方法,properties都可以直接使用,不建議使用,建議使用properties自身特有的方法;
特點:1、屬於雙列集合;2、沒有泛型,鍵與值得數據類型都是String;3、有與IO流相互結合的方法,可以將集合中的數據保存到硬盤上,也可以從硬盤上將數據讀取到集合中;
properties集合的構造方法和常用方法
構造:空參構造和一個帶有指定默認值的空屬性列表。
常用方法:
setProperty:存值的方法;getProperty(String Key,String values):讀值的方法。
StringPropertyNames方法,遍歷
properties與IO流相結合的方法
將集合中的數據保存到硬盤上。
ongoing硬盤上將數據讀取到properties

集合、set以及HASH