Java 컬렉션은
ArrayList,LinkedList,HashSet,LinkedHashSet등 다양한 구조가 있으며, 각각 접근 속도, 중복 처리, 순서 유지 특징이 다르다.객체의 비교에는
equals()와hashCode()가 필요하며, 특히 Hash 계열 컬렉션에서 중복 체크를 위해 함께 재정의해야 한다.정렬 시에는
Comparable을 구현해compareTo()를 작성하고,Iterator를 통해 컬렉션을 순회하며 출력할 수 있다.
equals() 와 hashCode()| 메서드 | 역할 | 언제 오버라이딩? |
|---|---|---|
equals(Object) | 객체 내용이 같은지 비교 | 클래스끼리 논리적으로 같다고 보고 싶을 때 |
hashCode() | 객체의 고유 숫자값 리턴 → Hash 계열 컬렉션에 사용 | equals() 오버라이드 시 반드시 같이 오버라이딩해야 함 |
✅ equals()와 hashCode() 둘 다 있어야 HashSet, HashMap에서 중복 제거나 정상 동작 가능
| 컬렉션 | 특징 | 순서 유지 | 중복 허용 | 정렬 |
|---|---|---|---|---|
ArrayList | 배열 기반, 빠른 접근 | ✅ 유지 | ✅ 허용 | ❌ (직접 정렬 필요) |
LinkedList | 노드 기반, 빠른 삽입/삭제 | ✅ 유지 | ✅ 허용 | ❌ |
HashSet | 해시 기반, 중복 제거 | ❌ 없음 | ❌ 허용 안 함 | ❌ |
LinkedHashSet | 입력 순서 유지 + 중복 제거 | ✅ 유지 | ❌ | ❌ |
Comparable, Comparator)implements Comparable<T> → 객체 자체에 정렬 기준 정의compareTo() 메서드 내부에서 기준 속성(price, id, 등)으로 비교Arrays.sort() 또는 Collections.sort() 로 정렬 실행for-each 문이나 Iterator를 사용해서 모든 컬렉션을 출력 또는 순회 가능Iterator<Product2> iter = list.iterator();
while (iter.hasNext()) {
System.out.println(iter.next());
}