Java 容器類 - 常用概念及常用方法介紹,實現原理以後分析:
1、數組是存儲相同類型的長度固定的數據,通過下標操作符來使用。
2、容器是存儲數據的另一種方式,可以動態存放多個對象,底層實現涉及大量數據結構和算法的內容,所以原理部分以後再詳細分析。
Java 容器類框架
如圖: 參考附件
容器常用接口:
1、Collection:定義了存取對象的方法,它有兩個常用子接口
List接口:存放的元素有序且允許元素有重複
Set 接口:存放的元素無序且不允許重複
2、Map 接口:定義了存儲鍵值對的方法
List 的一些基本特性:
有序性:指的是元素的存入順序和取出順序一致,每個元素對應一個index。
重複性:指的是equals 方法比較後的結果相等。
常用方法:
add(object)
add(index,object)
get(index)
remove(index)
indexOf(object)
size(); 獲取容器元素個數
iterator(); 不同的List 實現類會有不同的Ite內部類。從而實現對容器內元素的遍歷操作
List 接口具體實現類
ArrayList:內部存儲採用數組結構實現的List容器
LinkedList:內存存儲採用雙向鏈表結構實現的List容器。
Set 的一些基本特性
無序性:不保證元素的存入順序和取出順序一致。
重複性:兩個對象通過equials 方法比較後相等。
Set接口的具體實現類:
HashSet:根據哈希碼進行存放,存放元素無序、不重複
LinkedHashSet:存放元素有序
TreeSet:採用樹形鏈表存儲
對於存放到Set容器中的自定義對象,應該根據情況重寫equals和hashcode方法,以提高hashtable性能。
在Set中添加一個新的對象時,會先檢查他的hashcode,如果hashcode 不相等則認爲是不同的元素,
hashcode相等時,會再根據equals 方法比較相等的元素,相等的話則認爲是重複的元素,不再添加,不相等則把元素添加到對應hashcode的桶(數據塊)中。
Map相關內容:
以鍵值對的方式來進行存儲。
HashMap:內部“鍵”從用Set存放,不能重複。
TreeMap、HashTable
put(key,value)
get(key)
remove(key)
containKey(key)
containValue(value)
keySet(); // 返回此map 中所有鍵的Set
Iterator 迭代器:
所有實現了Collection接口的容器類都有一個iterator()方法,用以返回一個實現了Iterator接口的對象
可以方便地實現對容器內元素的遍歷操作。
hasNext(); 是否有下一個元素
next(); 返回下一個元素。
容器中的泛型:
泛型的概念源自於模板,編譯器會根據傳入的類型參數生成特定類型的類。
java中就是保存特定類型對象的容器類。在指定類型時,默認是Object類型