容器
容器在解決什麼問題?
存儲一堆的數據是容器解決的最基本的問題。針對不同的需求有不用的容器。主要在於刪除,插入,查詢,效率,長度,排序,去重,數據結構
- 數組。數組是Java內置的容器。效率很快,因爲是最基本的。但是長度卻被限制,其餘的容器去很好的解決這個問題。
- list:list集合是對數組的一個擴充。對於排序,對於數組長度的限制,ArrayList對於一般情況足夠使用,但是如果需要進行大量的插入和刪除工作,那麼還是需要用鏈表實現的LinkedList
- set:set集合是爲了進行去重,HashSet一般情況足夠對付,但是如果同時需要兼顧排序的話,則需要使用TreeSet,如果是需要插入和刪除上,則使用LinkedHashSet。但是set都是不能快速的進行訪問。
- map:map集合主要解決鍵值對數據結構的數據。一般使用HashMap足夠使用,但是需要排序則使用TreeMap。
數組
基礎
- 初始化
1.String[] strings = new String[n];
2.String[] strings = {"1","2"};
3.String[] strings = new String[]{"1","2"};
- 唯一訪問的屬性,length(),該屬性只代表數組的長度,不代表裏面具體元素的個數
- 訪問,[]
-
排序:
- 對象實現Comparable接口,Arrays.sort()
- 定義Comparator的實現類
集合
分類
-
colleciton
- list
- set
- map
hashMap
hashMap的使用就在於對於鍵的使用,使得我們可以快速的查詢。但是如果我們都把鍵存儲在數組中,使用數組進行查找總是很慢的。所以我們可以折中,使用鍵生成的hash碼來存儲值。但是hash碼有可能相同,所以我們可以將相同的hash碼的值存儲在同一個容器中。所以這個hash碼的設計變得很關鍵。因爲如果設計固定不變,就變回我們剛纔所說的情況。但是如果hash碼設計成每次都是變化的,那麼這個值將不好查詢。
轉換
array --> list
list,set --> Collection.toArray()
list --> set