1. 程式人生 > >Java Set, List的區別 .ArrayList, LinkedList的區別. Collections類 ,Collection介面的區別

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 {


public static void main(String[] args) {
// 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);
   Collections.sort(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]