java中set和list的區別

2021-08-26 09:29:21 字數 1247 閱讀 1877

set和list都是集合介面

簡要說明

set –其中的值不允許重複,無序的資料結構

list –其中的值允許重複,因為其為有序的資料結構

list的功能方法

實際上有兩種list:

一種是基本的arraylist,其優點在於隨機訪問元素,另一種是更強大的linkedlist,它並不是為快速隨機訪問設計的,而是具有一套更通用的方法。

list :

次序是list最重要的特點:它保證維護元素特定的順序。list為collection新增了許多方法,使得能夠向list中間插入與移除元素(這只推薦linkedlist使用。)乙個list可以生成listiterator,使用它可以從兩個方向遍歷list,也可以從list中間插入和移除元素。

arraylist :

由陣列實現的list。允許對元素進行快速隨機訪問,但是向list中間插入與移除元素的速度很慢。listiterator只應該用來由後向前遍歷arraylist,而不是用來插入和移除元素。因為那比linkedlist開銷要大很多。

linkedlist :

對順序訪問進行了優化,向list中間插入與刪除的開銷並不大。隨機訪問則相對較慢。(使用arraylist代替。)還具有下列方法:addfirst(),

addlast(), getfirst(), getlast(), removefirst() 和removelast(), 這些方法

(沒有在任何介面或基類中定義過)使得linkedlist可以當作堆疊、佇列和雙向佇列使用。

set的功能方法

set具有與collection完全一樣的介面,因此沒有任何額外的功能,不像前面有兩個不同的list。實際上set就是collection,只是行為不同。(這是繼承與多型思想的典型應用:表現不同的行為。)set不儲存重複的元素(至於如何判斷元素相同則較為負責)

set :

存入set的每個元素都必須是唯一的,因為set不儲存重複元素。加入set的元素必須定義equals()方法以確保物件的唯一性。set與collection有完全一樣的介面。set介面不保證維護元素的次序。

hashset : 為快速查詢設計的set。存入hashset的物件必須定義hashcode()。

treeset : 儲存次序的set, 底層為樹結構。使用它可以從set中提取有序的序列。

linkedhashset :

具有hashset的查詢速度,且內部使用鍊錶維護元素的順序(插入的次序)。於是在使用迭代器遍歷set時,結果會按元素插入的次序顯示。

java的list和set的區別

1 list,set都是繼承自collection介面 2 list特點 元素有放入順序,元素可重複 set特點 元素無放入順序,元素不可重複 注意 元素雖然無放入順序,但是元素在set中的位置是有該元素的hashcode決定的,其位置其實是固定的 3 list介面有三個實現類 linkedlist...

集合中List和Set

collection介面有兩個子介面 list 列表 set 集 list 可存放重複元素,元素訪問是有序的。set 不可以存放重複元素,元素訪問是無序 的list集合中常用的類 vector 執行緒安全,但速度慢,已被 arraylist 替代。arraylist 執行緒不安全,查詢速度快。lin...

java中list與listfiles區別

file f new file c string f1 f.list file f2 f.listfiles list 返回乙個字串 檔名 陣列,這些字串指定此抽象路徑名表示的目錄中的檔案和目錄。以c盤為例,返回的是c盤下資料夾名字的字串陣列,如 temp,windows listfiles 返回乙...