文章目錄
- List
- List集合概述
- Listlterator
- listerator:串列迭代器
- listerator常用方法:
- Arraylist與Linkedlist
- 兩者的異同
- ArrayList
- LinkedList集合的特有功能
- Set
- Set集合特點
- 哈希值
- HashSet集合特點
- LinkedHashSet集合
- TreeSet集合
List
List集合概述
- 有序集合(也稱為序列),用戶可以精確控制串列中的每個元素的每一個位置,用戶可以通過索引訪問并搜索串列中的元素
- 與Set集合不同,串列通常允許有重復的元素
特點
- 有序:存盤和取出的順序一致
- 可重復性:存盤的元素可以重復
特有方法
- void add(int index,E element);在此集合中指定位置插入指定的元素
- E remove(int index);洗掉指定索引的元素,回傳被洗掉的元素
- E set(int index,Eelement);修改指定索引的元素,回傳被修改的元素
- E get(int index);回傳指定索引的元素
Listlterator
listerator:串列迭代器
- 通過List集合的listIterator()方法得到,所以說它是list集合的迭代器
- 用于允許程式員沿著任意方向遍歷串列迭代器,在迭代的期間修改串列,病獲得串列中迭代器的當前位置
Iterator<Student> it = list.iterator();
while (it.hasNext()) {
Student s = it.next();
System.out.println(s.getName() + "," + s.getAge());
}
listerator常用方法:
- E next():回傳迭代中的下一個元素
- boolean hasNext();如果迭代具有更多元素則回傳ture
- E previous();回傳串列中的上一個元素
- boolean hasPrevious();如果此串列迭代器在相反的方向遍歷串列時具有更多元素則回傳ture
- void add(E e);將特定的元素插入到串列中
Arraylist與Linkedlist
兩者的異同
同:Arraylist與Linkedlist都是List的子類具有List的性質
異:
- ArrayList:底層資料結構是陣列,具有查詢快,增刪慢的性質
- LinkedList:底層資料結構是鏈表,具有查詢慢,增刪快的性質
ArrayList
作用:
- ArrayList是基于Object[]實作的,所以該只能裝參考資料型別,基本資料型別要想裝進集合,需要將基本資料型別進行類的包裝,
- 包裝類中有將String型別轉換為對應的基本資料型別的方法,
特點:
- 有序的:按照添加的順序
- 不唯一:同一個元素可以裝多次
構造方法
- ArrayList list = new ArrayList(int 陣列空間大小);
- ArrayList list = new ArrayList();//陣列默認開辟10塊空間
LinkedList集合的特有功能
- public void addFirst(E e);在開頭插入指定元素
- public void addLast(E e);將指定的元素追加到此串列的末尾
- public E getFirst();回傳串列中的第一個元素
- public E getLast();回傳此串列中的最后一個元素
- public E removeFirst();從此串列中洗掉并回傳第一個元素
- public E removeFirst();從串列中洗掉并回傳最后一個元素
Set
Set集合特點
- 不包含重復元素的集合
- 沒有帶索引的方法,所以不能使用普通的for回圈遍歷
哈希值
- 哈希值:是JDK根據物件的地址或者字串或數字算出來的int型別的數值
獲取物件的哈希值:回傳物件的哈希碼值
public int hashCode();
物件的哈希值特點:
- 同一個物件多次呼叫hashCode()方法回傳的哈希值是相同的
- 默認情況下,不同物件的哈希值不同,而重寫hashCode方法,可以實作讓不同物件的哈希值相同
HashSet集合特點
- 底層資料結構是哈希表
- 對集合的迭代順序不做任何保證,即存盤和取出的元素一致
- 沒有帶索引的方法,所以不能使用普通的for回圈遍歷
- 由于是Set集合分,所以是不包括重復元素的集合
public class test02 {
public static void main(String[] args) {
HashSet<String> hs= new HashSet<String>();
hs.add("李淳罡");
hs.add("劍九黃");
hs.add("王仙芝");
hs.add("李淳罡");
for(String s:hs){
System.out.println(s);
}
}
}

添加元素的程序:
注:為確保唯一性,需重寫hashCode()和heequals()方法
LinkedHashSet集合
概括:
- 繼承hashSet類并實作Set介面
- 底層資料結構是哈希表和鏈表
特點:
- 哈希表和鏈表實作的Set介面,具有可預測的迭代次序
- 由鏈表保證元素有序,即元素的儲存和取出順序是一致的
- 由哈希表保證元素唯一,即沒有重復的元素
public static void main(String[] args) {
//創建鏈表
LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>();
//添加資料
linkedHashSet.add("hello");
linkedHashSet.add("java");
linkedHashSet.add("world");
linkedHashSet.add("java");//重復資料不能存盤
//加強for回圈遍歷
for (String s : linkedHashSet) {
System.out.println(s);
}
}

TreeSet集合
概述:
- 位于java.util包下,使用時需要導包
- 間接實作了Set方法
特點:
- 元素有序,是按照一定的規則進行排序,并非是指存盤和取出的順序,具體方法由構造方法決定
- TreeSet();根據其元素的自然排序進行排序
- TreeSet(Comparator comparator);根據指定比較器進行排序
- 沒有索引的方法,所以不能使用普通for回圈
- 由于實作了Set集合,所以不包含重復元素的集合
代碼演示:
public static void main(String[] args) {
TreeSet<Integer> treeSet=new TreeSet<>();
treeSet.add(30);
treeSet.add(20);
treeSet.add(40);
treeSet.add(50);
treeSet.add(20);
for(Integer i:treeSet){
System.out.println(i);
}
}

轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/413407.html
標籤:java
