List และ Set ทั้งคู่เป็นอินเทอร์เฟซที่สังกัด Collection framework ทั้งสองขยายจากอินเทอร์เฟซ Collection ใช้สำหรับเก็บคอลเลกชันของออบเจ็กต์เป็นหน่วยเดียว
ก่อน JDK 1.2 เราใช้ Arrays, Vectors, และ Hashtable สำหรับจัดกลุ่มออบเจ็กต์เป็นหน่วยเดียว
| ลำดับ | หัวข้อ | List | Set |
|---|---|---|---|
| 1 | การเข้าถึงตำแหน่ง (Positional access) | List ให้การเข้าถึงตำแหน่งขององค์ประกอบในคอลเลกชัน | Set ไม่ให้การเข้าถึงตำแหน่งขององค์ประกอบในคอลเลกชัน |
| 2 | การนำไปใช้ (Implementation) | ArrayList, LinkedList, Vector, Stack | HashSet, LinkedHashSet, TreeSet |
| 3 | ค่าซ้ำ (Duplicate) | เก็บค่าซ้ำได้ | เก็บค่าซ้ำไม่ได้ |
| 4 | ลำดับ (Ordering) | รักษาลำดับการแทรก (insertion order) | ไม่รักษาลำดับใดๆ (ยกเว้น LinkedHashSet/TreeSet) |
| 5 | ค่า Null | เก็บ null หลายค่าได้ | เก็บ null ได้เพียงค่าเดียว |
ตัวอย่าง List
import java.util.List;
import java.util.ArrayList;
import java.util.LinkedList;
public class ListExample {
public static void main(String[] args) {
List<String> al = new ArrayList<String>();
al.add("BMW");
al.add("Audi");
al.add("BMW");
System.out.println("List Elements: ");
System.out.print(al);
}
}ผลลัพธ์
List Elements: [BMW, Audi, BMW]
ตัวอย่าง Set
import java.util.Set;
import java.util.HashSet;
import java.util.TreeSet;
public class SetExample {
public static void main(String args[]) {
int count[] = {2, 4, 3, 5};
Set<Integer> hset = new HashSet<Integer>();
try{
for(int i = 0; i<4; i++){
hset.add(count[i]);
}
System.out.println(hset);
} catch(Exception e){
e.printStackTrace();
}
}
}ผลลัพธ์
[2, 4, 3, 5]