Map:存儲雙列數據的集合。數據通過鍵值對存儲。存儲的數據是無序的,鍵值不能重復,但是值value可以重復。鍵和值是壹壹對應的。
收集界面
集合是Java中最基本的集合接口。它描述了壹組與集合操作相關的方法。
int Size();//設置大小
布爾型isEmpty();//是空的嗎?
布爾包含(對象o);//是否包含對象?
叠代器& ltE & gt叠代器();//返回叠代對象以循環訪問集合中的元素。
object[]to array();//數組集合中的元素並返回它們。
& ltT & gtT[]to array(T[]a);//最後壹個方法的泛型形式
布爾加法(E E);//將對象E添加到集合中,添加成功返回true。
布爾移除(對象o);//移除元素
boolean containsAll(集合& lt?& gtc);//傳入壹個集合C,如果C中的所有元素都存在,則返回true。
布爾addAll(集合& lt?擴展E & gtc);//將集合C中的所有元素添加到這個集合中。
boolean removeAll(集合& lt?& gtc);//這個集合減去C集合中的元素。
布爾零售(集合& lt?& gtc);//取這個集合和C集合的交集。
void clear();//清空集合
布爾等於(對象o);//判斷平等
int hashCode();//獲取集合的當前哈希值。
設置接口
Set接口直接繼承自Collection接口,方法接口完全壹樣。Set對添加的元素有壹些要求,不允許元素重復,元素之間沒有順序。這相當於壹個不允許重復的離散集合。因此,添加到集合中的元素類型需要定義equals方法。如果使用自定義類,應該重寫equals方法,確保實現需要的函數。
Set接口主要實現兩個類:HashSet和TreeSet。
HashSet根據hash訪問元素,所以速度更快。HashSet從AbstractSet類繼承,然後實現Set、Cloneable和Serializable接口。?
TreeSet也繼承自AbstractSet,但不同的是它實現了NavigableSet接口。NavigableSet繼承自SortedSet。SortedSet是壹個有序集。它添加的元素必須實現Comparable接口,因為在添加元素時需要對它進行排序。NavigableSet提供了更多關於元素順序的方法。
LinkedHashSet也是Set的壹個實現。它類似於HashSet,只是在內部用壹個鏈表來維護,鏈表是按照元素插入的順序保存的。
列表界面
列表接口也是從集合中繼承的。與Set不同,List可以存儲重復的元素。有兩個主要的實現:ArrayList和LinkedList。?
ArrayList沒什麽好說的,和傳統數組壹樣,隨機訪問速度很快,但是插入和刪除的速度很慢。?
LinkedList和ArrayList正好相反,因為鏈表是用來保存數據的,所以插入和刪除元素的速度很快,但是訪問數據的速度沒有ArrayList快。
地圖
Map是壹個存儲鍵值對的容器接口。每個元素包含壹個鍵對象和值對象,元素不允許重復。?
地圖接口可以通過以下方式實現:
HashMap是最常用的實現。HashMap使用哈希映射訪問數據,速度相當快,是O(1)的速度。它的容量和負載系數可以在開始時設置。當元素數量達到容量*負載系數時,將進行擴展。?
LinkedHashMap類似於HashMap,只是內部使用了壹個鏈表來維護順序。因此,遍歷的順序就是它的插入順序。?
TreeMap是基於紅黑樹的地圖,插入的數據按順序保存,效率很高。因此,在遍歷輸出時可以獲得排序後的數據。但是這要求插入的數據實現可比較的接口。
摘要
集合、集合、列表和映射都是接口,不能實例化。
集合和列表都繼承自集合,而映射與集合無關。
集合和列表的區別在於,集合不能重復,而列表可以重復。
Map與Set和List的區別在於,Map是訪問鍵值對,而另外兩個是保存元素。
希望對妳有幫助!~