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());
}