List、Set、Map的區別

                                                                                               (圖一)面試

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

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

正如圖一,list和set是實現了collection接口的。

 

(圖二)eclipse

List:1.能夠容許重複的對象。

    2.能夠插入多個null元素。

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

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

 

 (圖三)spa

 Set:1.不容許重複對象

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

        3. 只容許一個 null 元素

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

 

(圖四)3d

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咱們一塊兒來寫一寫吧。對象

首先咱們要比較對象的哪一個屬性呢。年齡?身高?仍是體重?剛剛看幫助文檔已經知道了,因此下面你們一塊兒來寫一下。blog

 若是你們也是像上圖這種寫法,那麼再想想有沒有更好的辦法。(我這樣吻是確定有的,好好看看幫助文檔,你就知道了,我知道你只要用心想一想,確定想出來的!)排序

好了,寫完年齡,不去繼續花幾分鐘把按照身高來排序也寫一下吧。索引

相關文章
相關標籤/搜索