1. 程式人生 > >java中list和set的區別與聯絡

java中list和set的區別與聯絡

此文章是看別的大牛整理之後,自己學習進行消化後,對子自己的理解和得到的內容的一個總結。       介面Collection       Collection是java.util下的一個介面,它繼承的類是Iterable<E>。它是關於集合方面的一個跟介面,也就是java中所有處理集合的資料方面都是直接或者間接實現Collection介面。其中java中提供了詳細的Collection的API。       Collection介面有很多的子介面,其中包括最常用的子介面就是List和Set。       所以,針對List和Set的聯絡在於,它們都是Collection的子介面。       至於區別在於哪裡,下面做一下詳細的介紹。      List:這個介面能夠精準的記錄每一個元素的插入位置(換句話說就是這個介面內容所有元素是按照順序去儲存的),使用者可以通過索引的方式去取得某個元素的值,這個跟java中陣列有點類似,List中儲存的所有資料允許重複。      Set:這個介面無法記錄每一個元素的具體位置,整個集合中所有元素是無序排列的,並且Set儲存資料集合是不允許有重複的元素的。      既然List和Set均為介面,那麼就不能直接例項化,需要藉助實現他們介面的子類進行例項化,由此來使用介面中提供的各種方法。      實現List介面的子類中包括:ArrayList
LinkedListVector。其中ArrayList這個類是類似陣列形式的集合例項化,而LinkedList類則是連結串列形式的例項化,具體的差別在於資料結構上面的不同。Vector 類非常類似ArrayList,兩者的不同之處在於Vector是同步的方法,在多執行緒操作的時候可能會丟擲ConcurrentModificationException。     實現Set介面的子類中包括:HasSet。