1. 程式人生 > >list/set/map三者的區別?

list/set/map三者的區別?

1.面試題:你說說collection裡面有什麼子類。

(其實面試的時候聽到這個問題的時候,你要知道,面試官是想考察List,Set)

正如圖一,list和set是實現了collection介面的。

(圖二)

List:1.可以允許重複的物件。

    2.可以插入多個null元素。

        3.是一個有序容器,保持了每個元素的插入順序,輸出的順序就是插入的順序。

        4.常用的實現類有 ArrayList、LinkedList 和 Vector。ArrayList 最為流行,它提供了使用索引的隨意訪問,而 LinkedList 則對於經常需要從 List 中新增或刪除元素的場合更為合適。

 (圖三)

 Set:1.不允許重複物件

     2. 無序容器,你無法保證每個元素的儲存順序,TreeSet通過 Comparator  或者 Comparable 維護了一個排序順序。

        3. 只允許一個 null 元素

        4.Set 介面最流行的幾個實現類是 HashSet、LinkedHashSet 以及 TreeSet。最流行的是基於 HashMap 實現的 HashSet;TreeSet 還實現了 SortedSet 介面,因此 TreeSet 是一個根據其 compare() 和 compareTo() 的定義進行排序的有序容器。

(圖四)

1.Map不是collection的子介面或者實現類。Map是一個介面。

2.Map 的 每個 Entry 都持有兩個物件,也就是一個鍵一個值,Map 可能會持有相同的值物件但鍵物件必須是唯一的。

3. TreeMap 也通過 Comparator  或者 Comparable 維護了一個排序順序。

4. Map 裡你可以擁有隨意個 null 值但最多隻能有一個 null 鍵。

5.Map 介面最流行的幾個實現類是 HashMap、LinkedHashMap、Hashtable 和 TreeMap。(HashMap、TreeMap最常用)

2.面試題:什麼場景下使用list,set,map呢?

(或者會問為什麼這裡要用list、或者set、map,這裡回答它們的優缺點就可以了)

答:

  1. 如果你經常會使用索引來對容器中的元素進行訪問,那麼 List 是你的正確的選擇。如果你已經知道索引了的話,那麼 List 的實現類比如 ArrayList 可以提供更快速的訪問,如果經常新增刪除元素的,那麼肯定要選擇LinkedList。

  2. 如果你想容器中的元素能夠按照它們插入的次序進行有序儲存,那麼還是 List,因為 List 是一個有序容器,它按照插入順序進行儲存。

  3. 如果你想保證插入元素的唯一性,也就是你不想有重複值的出現,那麼可以選擇一個 Set 的實現類,比如 HashSet、LinkedHashSet 或者 TreeSet。所有 Set 的實現類都遵循了統一約束比如唯一性,而且還提供了額外的特性比如 TreeSet 還是一個 SortedSet,所有儲存於 TreeSet 中的元素可以使用 Java 裡的 Comparator 或者 Comparable 進行排序。LinkedHashSet 也按照元素的插入順序對它們進行儲存。

  4. 如果你以鍵和值的形式進行資料儲存那麼 Map 是你正確的選擇。你可以根據你的後續需要從 Hashtable、HashMap、TreeMap 中進行選擇。

大家可以跟著下面的步驟一起嘗試一下。

1.我們知道了列表要實現排序,需要重寫comparable介面的compareTo的方法。

但是是我不知道comparaTo裡面要怎麼寫呢,它有傳入引數嗎?它有返回值嗎?如果有事什麼型別的呢?ok,下面一起來做一下。先把這個連結的幫助文件下載下來。下載完之後,開啟幫助文件,

 

2.看完了幫助文件是不是心裡稍微有點底氣了呢,那現在開啟eclipse我們一起來寫一寫吧。

首先我們要比較物件的哪個屬性呢。年齡?身高?還是體重?剛剛看幫助文件已經知道了,所以下面大家一起來寫一下。

相關推薦

list , set ,map 三者的用法以及區別

首先,講一下list和set之間的相似性,list和set都是單列集合,他們有一個共同的父介面---collection。list是依次列出一個結合中的所有的元素,若集合中有重複的,同樣列出,有序;set列出的集合中是不允許有重複的,也就是說裡面有一個A物件和一個B物件,若

list/set/map三者區別?

1.面試題:你說說collection裡面有什麼子類。(其實面試的時候聽到這個問題的時候,你要知道,面試官是想考察List,Set)正如圖一,list和set是實現了collection介面的。(圖二)List:1.可以允許重複的物件。    2.可以插入多個null元素。 

List Set Map區別

List和Set是單列結合,它們的父類是Collection,Map是雙列結合,Map用於儲存的是鍵值對,key不允許重複。 List允許重複元素,而Set不允許重複元素。 List以特定次序來持有元素,有先後順序,加入的物件就像排隊一樣,先來後到的順序,有時候也可以插隊,即呼叫add(in

集合類(Collection) List/Set/Map... 的區別和聯絡

Collection:List、Set Map:HashMap、HashTable 如何在它們之間選擇 一、Array , Arrays Java所有“儲存及隨機訪問一連串物件”的做法,array是最有效率的一種。 1、效率高,但容量固定且無法動態改變。 array還

java集合類List/Set/Map區別和聯絡

Java所有“儲存及隨機訪問一連串物件”的做法,array是最有效率的一種。 1、效率高,但容量固定且無法動態改變。       array還有一個缺點是,無法判斷其中實際存有多少元素,length只是告訴我們array的容量。 2、Java中有一個Arrays類,專門用來操作array。      

List,Set,Map區別

首先List與Set都是單列元素的集合,它們有一個共同的父介面Collection。 List 特點: 元素有放入順序,元素可重複 存元素:多次呼叫add(Object)方法時,每次加入的物件按先來後到的順序排序,也可以插隊,即呼叫add(int index,

list set map區別及適用場景

trees itl 重寫 定義 size 需要 nds sync 功能 list與Set、Map區別及適用場景 1、List,Set都是繼承自Collection接口,Map則不是 2、List特點:元素有放入順序,元素可重復 ,Set特點:元素無放入順序,元素不可重

ListSet,map有什麼區別List,Set, Map是否繼承自Collection介面?

List: 1.可以允許重複的物件。 2.可以插入多個null元素。 3.是一個有序容器,保持了每個元素的插入順序,輸出的順序就是插入的順序。 4.常用的實現類有 ArrayList、LinkedList 和 Vector。ArrayList 最為流行,它提供了使用索引的隨意訪問,而 L

SetListMap區別

Set、List和Map是java容器框架的三個最重要的介面。 List提供了一個有序且有索引的容器,它允許重複值的出現。 Set提供了一個無序的唯一物件的容器,也就是說Set不允許重複值。 Map提供了一個基於鍵值對以及雜湊的資料結構。 容器API裡都

Collection List Set Map 區別記憶

List介面對Collection進行了簡單的擴充,它的具體實現類常用的有ArrayList和LinkedList。你可以將任何東西放到一個List容器中,並在需要時從中取出。ArrayList從其命名中可以看出它是一種類似陣列的形式進行儲存,因此它的隨機訪問速度極快,而LinkedList的內部實現是連結串

SetListMap區別與聯絡,及面試重點問題

Set、List、Map的區別 List 1.可以允許重複的物件。 2.可以插入多個null元素。 3.是一個有序容器,保持了每個元素的插入順序,輸出的順序就是插入的順序。 4.常用的實現類有 ArrayList、LinkedList

List/Set/Map詳解及其區別和他們分別適用的場景

    Java中的集合包括三大類,它們是Set(集)、List(列表)和Map(對映),它們都處於java.util包中,Set、List和Map都是介面,它們有各自的實現類。Set的實現類主要有

Java中的ListMap有什麼區別List, Set, Map是否繼承自Collection介面?

List,Set,Map是否繼承自Collection介面?  答:List,Set是,Map不是。 Collection是最基本的集合介面,一個Collection代表一組Object,即Collection的元素。一些Collection允許相同的元素而另一些不行。一

list set map的特點及區別

List,Set,Map是否繼承自Collection介面? 答:List,Set是,Map不是。 Collection是最基本的集合介面,一個Collection代表一組Object,即Collection的元素。一些Collection允許相同的元素而另一些不行。一些能

List,Set,Map用法以及區別

List,Set,Map是否繼承自Collection介面? 答:List,Set是,Map不是。 Collection是最基本的集合介面,一個Collection代表一組Object,即Collection的元素。一些Collection允許相同的元素而另一些不行。一些能

List,Set,Map的聯絡和區別

要說清楚list,set,map的區別,大家先看一下這段話,我覺得相當有趣,當然這是別人的話,這裡引用一下。 世間上本來沒有集合,(只有陣列參考C語言)但有人想要,所以有了集合 有人想有可以自動擴充套件的陣列,所以有了List 有的人想有沒有

ist , set ,map 三者的用法以及區別

首先,講一下list和set之間的相似性,list和set都是單列集合,他們有一個共同的父介面---collection。list是依次列出一個結合中的所有的元素,若集合中有重複的,同樣列出,有序;set列出的集合中是不允許有重複的,也就是說裡面有一個A物件和一個B物件,若是

集合類List,set,Map 的遍歷方法,用法和區別

看到一篇好文章,直接拿下了。。。當然,如果你目前只和我一樣更注重它的用法,只看如何遍歷就可以了。 遍歷list: 方法一: for(String s:lists){System.out.println(s); } 方法二: System.out.println(

java list set map 集合的區別

容器 sortedset 允許 sort 子接口 因此 實現類 索引 存儲 List:1.可以允許重復的對象。    2.可以插入多個null元素。 3.是一個有序容器,保持了每個元素的插入順序,輸出的順序就是插入的順序。 4.常用的

Java集合類 List Set Map

set map 集合 java集合類 索引 擁有 對象 ava 重復 排序 1.List(有序、可重復) (1)List裏存放的對象是有序的,而且可以重復。 (2)List關註的是索引,擁有一系列索引相關的方法。 (3)往其中插入或刪除數據時,後面的數據會移動。 2.S