Java Collections Framework: List, Set, Map อธิบายแบบเข้าใจง่าย
#java13 เม.ย. 2569
Collections Framework คืออะไร
Java Collections Framework เป็น set ของ interfaces และ classes สำหรับจัดการกลุ่มของ objects ประกอบด้วย List, Set, Queue, Map
List — ลำดับและซ้ำได้
import java.util.*;
// ArrayList - fast random access
List<String> names = new ArrayList<>();
names.add("สมชาย");
names.add("สมหญิง");
names.add("สมชาย"); // ซ้ำได้
System.out.println(names.get(0)); // สมชาย
System.out.println(names.size()); // 3
// LinkedList - fast insert/delete
List<Integer> numbers = new LinkedList<>();
numbers.add(1);
numbers.add(0, 0); // insert ที่ index 0
// Immutable List (Java 9+)
List<String> immutable = List.of("a", "b", "c");
Set — ไม่ซ้ำ
// HashSet - ไม่มีลำดับ
Set<String> hashSet = new HashSet<>();
hashSet.add("apple");
hashSet.add("banana");
hashSet.add("apple"); // ไม่เพิ่ม
System.out.println(hashSet.size()); // 2
// TreeSet - เรียงลำดับ
Set<Integer> treeSet = new TreeSet<>();
treeSet.add(3);
treeSet.add(1);
treeSet.add(2);
System.out.println(treeSet); // [1, 2, 3]
// LinkedHashSet - รักษาลำดับการเพิ่ม
Set<String> linkedSet = new LinkedHashSet<>();
Map — key-value pairs
// HashMap
Map<String, Integer> scores = new HashMap<>();
scores.put("สมชาย", 95);
scores.put("สมหญิง", 88);
scores.put("สมศักดิ์", 72);
System.out.println(scores.get("สมชาย")); // 95
System.out.println(scores.getOrDefault("ไม่มี", 0)); // 0
// iterate
for (Map.Entry<String, Integer> entry : scores.entrySet()) {
System.out.println(entry.getKey() + ": " + entry.getValue());
}
// Java 8+ forEach
scores.forEach((name, score) ->
System.out.println(name + ": " + score)
);
// TreeMap - เรียงตาม key
Map<String, Integer> sorted = new TreeMap<>(scores);
Queue และ Deque
// Queue - FIFO
Queue<String> queue = new LinkedList<>();
queue.offer("first");
queue.offer("second");
queue.offer("third");
System.out.println(queue.poll()); // first
System.out.println(queue.peek()); // second (ไม่ลบ)
// PriorityQueue
Queue<Integer> pq = new PriorityQueue<>();
pq.offer(3);
pq.offer(1);
pq.offer(2);
System.out.println(pq.poll()); // 1 (น้อยสุดออกก่อน)
Collections Utility
List<Integer> nums = new ArrayList<>(Arrays.asList(3, 1, 4, 1, 5, 9));
Collections.sort(nums); // เรียงน้อยไปมาก
Collections.reverse(nums); // กลับลำดับ
Collections.shuffle(nums); // สุ่ม
int max = Collections.max(nums); // หาค่าสูงสุด
สรุป
- List — ใช้เมื่อต้องการลำดับและอนุญาตซ้ำ
- Set — ใช้เมื่อต้องการ unique values
- Map — ใช้เมื่อต้องการ key-value lookup
- Queue — ใช้สำหรับ task scheduling, BFS