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 返回乙...