當前位置:成語大全網 - 漢語詞典 - java list和map有什麽區別?

java list和map有什麽區別?

列表:存儲在單列中的數據集合。存儲的數據是有序的,可重復的?

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是訪問鍵值對,而另外兩個是保存元素。

希望對妳有幫助!~