1. 程式人生 > >Set,List,Map的區別 Set(集) List(列表) Map(對映)

Set,List,Map的區別 Set(集) List(列表) Map(對映)

Set,List,Map的區別
java集合的主要分為三種類型:
Set(集)
List(列表)
Map(對映)
要深入理解集合首先要了解下我們熟悉的陣列:
陣列是大小固定的,並且同一個陣列只能存放型別一樣的資料(基本型別/引用型別),而JAVA集合可以儲存和運算元目不固定的一組資料。所有的JAVA集合都位於java.util包中!JAVA集合只能存放引用型別<地址>的資料,不能存放基本資料型別

Collection介面

Collection是最基本的集合介面,聲明瞭適用於JAVA集合(只包括Set和List)的通用方法。Set和List都繼承了Conllection,Map。
Collection介面的方法:
boolean add(Object )向集合中加入一個物件的引用
clear():刪除集合中所有的物件,即不再持有這些物件的引用
booleanisEmpty():判斷集合是否為空
Boolean contains(Object ) 判斷集合中是否持有特定物件的引用
iterator()返回一個Iterator物件,可以用來遍歷集合中的元素
remove(Object):從集合中刪除一個物件的引用
size():返回集合中元素的數目
Object[] toArray():返回一個數組,該陣列中包括集合中的所有元素
關於:Iterator()和toArray()方法都用於集合的所有的元素,前者返回一個Iterator物件,後者返回一個包含集合中所有元素的陣列。
Iterator介面聲明瞭如下方法:
hasNext():判斷集合中元素是否遍歷完畢,如果沒有,就返回true
next():返回下一個元素
remove():從集合中刪除上一個由next()方法返回的元素.

Set(集合)
Set是最簡單的一種集合。集合中的物件不按特定的方式排序,並且沒有重複物件。
Set介面主要實現了兩個實現類:
HashSet:HashSet類按照雜湊演算法來存取集合中的物件,存取速度比較快.
TreeSet:TreeSet類實現了SortedSet介面,能夠對集合中的物件進行排序。
就是從小到大排序了一次。

Set的用法:存放的是物件的引用,沒有重複物件
Set set=new HashSet();
String s1=new String(“hello”);
String s2=s1;
String s3=new String(“world”);
set.add(s1);
set.add(s2);
set.add(s3);
System.out.println(set.size());
//列印集合中物件的數Set的add()方法是如何判斷物件是否已經存放在集合中?
Boolean isExists=false;
Iterator iterator=set.iterator();
while(it.hasNext()){
String oldStr=it.next();
if(newStr.equals(oldStr)){
isExists=true;
}
}
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時,結果會按元素插入的次序顯示。

List(列表)
List的特徵是其元素以線性方式儲存,集合中可以存放重複物件。
List介面主要實現類包括:(參考文章:ArrayList與LinkedList的區別)
ArrayList()<查>:代表長度可以改變得陣列。可以對元素進行隨機的訪問,向ArrayList()中插入與刪除元素的速度慢。
LinkedList()<增刪改>:在實現中採用連結串列資料結構。插入和刪除速度快,訪問速度慢。
對於List的隨機訪問來說,就是隻隨機來檢索位於特定位置的元素。
List的get(intin dex)方法放回集合中由引數index指定的索引位置的物件,下標從“0”開始。最基本的兩種檢索集合中的所有物件的方法:
for迴圈和get()方法:
for(int i=0;i