데이터를 효율적으로 다루기 위한 저장 방식인 자료구조는 크게 두 가지로 나뉩니다.
자바에서는 이러한 동적 자료구조를 표준화하여 제공하는데, 이를 컬렉션 프레임워크라고 합니다.
컬렉션 프레임워크는 크게 Collection 인터페이스와 Map 인터페이스로 나뉩니다.
| 인터페이스 | 순서 유지 | 중복 허용 | 주요 구현체 |
|---|---|---|---|
| List | O | O | ArrayList, LinkedList |
| Set | X | X | HashSet, TreeSet |
| Map | X (Key) | Value만 허용 | HashMap, TreeMap |
가장 많이 비교되는 두 클래스입니다. 내부 구조에 따른 성능 차이를 이해하는 것이 핵심입니다.
💡 핵심 요약: 데이터 조회가 많으면 ArrayList, 삽입/삭제가 빈번하면 LinkedList!
중복을 절대 허용하지 않는 주머니 같은 구조입니다.
equals() 메서드를 통한 추가 확인이 필요할 수 있습니다.null 저장 불가)키(Key)와 값(Value)으로 이루어진 구조입니다. 학번(Key)-이름(Value) 관계를 생각하면 쉽습니다.
null 키를 허용하지 않습니다.사용자 정의 객체(예: Student 클래스)를 정렬할 때는 기준이 필요합니다.
클래스 내부에 직접 구현하며, compareTo 메서드를 오버라이딩합니다.
public class Product implements Comparable<Product> {
private String name;
private int price;
@Override
public int compareTo(Product other) {
// 가격 기준 오름차순 정렬
return Integer.compare(this.price, other.price);
}
}
익명 클래스나 람다(Lambda)를 사용하여 1회성 정렬이나 다양한 기준을 적용할 때 유용합니다.
// 람다를 이용한 가격 내림차순 정렬 예시
Collections.sort(productList, (p1, p2) -> Integer.compare(p2.getPrice(), p1.getPrice()));