Java Set, List的區別 .ArrayList, LinkedList的區別. Collections類 ,Collection介面的區別
學習這個之前我們先來看一下陣列有什麼缺陷:
1、陣列的長度難以擴充這是陣列的缺陷。
2、陣列中每個元素的資料型別都必須是一樣的。
由於陣列的這兩個缺陷的存在,所以我們引入了 Set 和List。
首先我們來看一下Set和List的異同:
1、它們都實現了Collection介面。
2、Set不區分元素的順序,不允許有重複的元素。
3、List元素按順序排序,允許有重複的元素。
所以Set集合的元素是沒有下標 標識的,而List集合就可以有下標來標識某個元素。
ArrayList和LinkedList的異同:
1、兩者都實現了List這個類。
2、兩者的存取速度不同,ArrayList存取速度快,刪除 插入 速度慢。反之 LinkedList存取速度慢,刪除 插入 速度快。
3、兩者的資料結構不同:ArrayList底層是基於陣列的資料結構,LisnkedList底層是基於雙向連結串列的資料結構。
Collections是Collection的子類,Collections實現了Collection的介面。Collections提供了一些靜態方法實現了基於List容器的 一些常用方法。
以下是Collections的一些常用的靜態方法的例項:
import java.awt.List;
import java.util.ArrayList;
import java.util.Collections;
import java.util.LinkedList;
import java.util.Set;
public class ArrayListTest {
// TODO Auto-generated method stub
LinkedList s = new LinkedList();
for (int i = 0; i < 6; i++) {
s.add("a"+i);
}
System.out.println("連結串列的輸出結果:"+s);
Collections.shuffle(s);//打亂排序
System.out.println("打亂排序"+s);
System.out.println("升序後的結果:"+s);
Collections.reverse(s);//倒序
System.out.println("倒序後的結果:"+s);
}
}
輸出結果是:
連結串列的輸出結果:[a0, a1, a2, a3, a4, a5]
打亂排序[a2, a0, a4, a1, a5, a3]
升序後的結果:[a0, a1, a2, a3, a4, a5]
倒序後的結果:[a5, a4, a3, a2, a1, a0]