ArrayList, LinkedList, HashMap, LinkedHashMap, TreeMap, HashSet의 선택 기준과 사용법.
import java.util.*;
public class CollectionsDemo {
public static void main(String[] args) {
// List — 순서 있는 중복 허용
List<String> arrayList = new ArrayList<>(); // 조회 O(1)
List<String> linkedList = new LinkedList<>(); // 삽입/삭제 O(1)
List<String> immutable = List.of("a", "b", "c"); // 불변 (Java 9+)
arrayList.addAll(List.of("banana", "apple", "cherry"));
Collections.sort(arrayList);
System.out.println(arrayList); // [apple, banana, cherry]
// Map — 키-값, 키 중복 불가
Map<String, Integer> hashMap = new HashMap<>(); // 순서 없음
Map<String, Integer> linkedMap = new LinkedHashMap<>(); // 삽입 순서
Map<String, Integer> treeMap = new TreeMap<>(); // 키 정렬
hashMap.put("banana", 2);
hashMap.put("apple", 1);
hashMap.put("cherry", 3);
// getOrDefault, putIfAbsent, computeIfAbsent
hashMap.getOrDefault("durian", 0);
hashMap.putIfAbsent("apple", 99); // apple 이미 있어 무시
hashMap.computeIfAbsent("elderberry", k -> k.length());
hashMap.merge("apple", 5, Integer::sum); // apple = 1+5 = 6
// 순회
hashMap.forEach((k, v) ->
System.out.println(k + ": " + v));
// Set — 중복 없음
Set<String> hashSet = new HashSet<>(arrayList); // 순서 없음
Set<String> treeSet = new TreeSet<>(arrayList); // 정렬
Set<String> immSet = Set.of("x", "y", "z"); // 불변
// Collections 유틸리티
System.out.println(Collections.max(arrayList));
System.out.println(Collections.frequency(arrayList, "apple"));
Collections.shuffle(arrayList);
Collections.reverse(arrayList);
Collections.unmodifiableList(arrayList); // 불변 뷰
}
}