日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

List、Set、Map的区别

發(fā)布時間:2025/7/25 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 List、Set、Map的区别 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

轉自https://www.cnblogs.com/IvesHe/p/6108933.html

? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?(圖一)

1.面試題:你說說collection里面有什么子類。

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

正如圖一,list和set是實現(xiàn)了collection接口的。

?

(圖二)

List:1.可以允許重復的對象。

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

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

? ? ? ? 4.常用的實現(xiàn)類有?ArrayList、LinkedList 和 Vector。ArrayList 最為流行,它提供了使用索引的隨意訪問,而 LinkedList 則對于經(jīng)常需要從 List 中添加或刪除元素的場合更為合適。

?

?(圖三)

?Set:1.不允許重復對象

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

? ? ? ? 3.?只允許一個 null 元素

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

?

(圖四)

1.Map不是collection的子接口或者實現(xiàn)類。Map是一個接口。

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

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

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

5.Map 接口最流行的幾個實現(xiàn)類是 HashMap、LinkedHashMap、Hashtable 和 TreeMap。(HashMap、TreeMap最常用)

?

?

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

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

答:

  • 如果你經(jīng)常會使用索引來對容器中的元素進行訪問,那么 List 是你的正確的選擇。如果你已經(jīng)知道索引了的話,那么 List 的實現(xiàn)類比如 ArrayList 可以提供更快速的訪問,如果經(jīng)常添加刪除元素的,那么肯定要選擇LinkedList。

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

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

  • 如果你以鍵和值的形式進行數(shù)據(jù)存儲那么 Map 是你正確的選擇。你可以根據(jù)你的后續(xù)需要從 Hashtable、HashMap、TreeMap 中進行選擇。

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

    1.我們知道了列表要實現(xiàn)排序,需要重寫comparable接口的compareTo的方法。

    但是是我不知道comparaTo里面要怎么寫呢,它有傳入?yún)?shù)嗎?它有返回值嗎?如果有事什么類型的呢?ok,下面一起來做一下。先把這個鏈接的幫助文檔下載下來。下載完之后,打開幫助文檔,

    ?

    ?

    2.看完了幫助文檔是不是心里稍微有點底氣了呢,那現(xiàn)在打開eclipse我們一起來寫一寫吧。

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

    ?如果大家也是像上圖這種寫法,那么再想一想有沒有更好的辦法。(我這樣吻是肯定有的,好好看看幫助文檔,你就知道了,我知道你只要用心想想,肯定想出來的!)

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

    轉載于:https://www.cnblogs.com/fangqideagan/p/9168238.html

    總結

    以上是生活随笔為你收集整理的List、Set、Map的区别的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內容還不錯,歡迎將生活随笔推薦給好友。