[Java] Collection Framework와 Comparator/Comparable

이지현·2023년 4월 6일
0

Java

목록 보기
29/46
post-thumbnail

✔️ Collection Framework

1. 핵심 인터페이스와 특징

인터페이스특징
List순서가 있는 데이터의 집합, 데이터 중복 허용 O
Set순서가 없는 데이터의 집합, 데이터 중복 허용 X
Map키와 값의 쌍으로 이루어진 데이터의 집합, 순서 X, 키 중복 허용 X, 값 중복 허용 O

2. Collection 인터페이스

메서드설명
boolean add(Object o), boolean addAll(Collection c)지정된 객체 또는 Collection의 객체들을 Collection에 추가
void clearCollection의 모든 객체 삭제
contains, containsAll지정된 객체 또는 Collection의 객체들이 Collection에 포함되어 있는지 확인
equals동일한 Collection인지 비교
hashCodeCollection의 hash code 반환
isEmptyCollection이 비어있는지 확인
iteratorCollection의 iterator를 얻어서 반환
remove, removeAll지정된 객체 또는 Collection에 포함된 객체들 삭제
retainAll지정된 Collection에 포함된 객체만 남기고 다른 객체들은 Collection에서 삭제
size저장된 객체의 개수 반환
toArray저장된 객체를 객체 배열(Object[])로 반환

3. List 인터페이스

메서드설명
void add(int index, Object element) boolean addAll(int index, Collection c)지정된 위치에 객체 또는 컬렉션에 포함된 객체들 추가
get지정된 위치에 있는 객체 반환
indexOf객체의 위치 반환(List의 첫 번째 요소부터 순방향으로)
lastIndexOf객체의 위치 반환(List의 마지막 요소부터 역방향으로)
listIteratorList의 객체에 접근할 수 있는 ListIterator 반환
remove지정된 위치에 있는 객체 삭제 및 삭제된 객체 반환
Object set(int index, Object element)지정된 위치에 객체 저장
void sort(Comparator)지정된 비교자(comparator)로 List 정렬
List subList(int fromIndex, int toIndex)지정된 범위에 있는 객체 반환

4. Set 인터페이스

4. Map 인터페이스

4-1 Map.Entry 인터페이스

  • Map에 저장되는 key-value 쌍을 다루기 위해서 Map 인터페이스의 내부 인터페이스로 인터페이스 안에 인터페이스 정의
메서드설명
equals동일한 Entry인지 비교
getKeyEntry의 key 객체 반환
getValueEntry의 value객체 반환
hashCodeEntry의 해시코드 반환
setValueEntry의 value 객체를 지정된 객체로 바꿈

💡 Java는 Map을 Collection으로 보지 않는다. Collection Interface를 상속하여 구현된 클래스들은 모두 단일 데이터를 처리하지만 Map은 key/value가 쌍을 이루며 처리하기 때문에 호환성 문제가 발생할 수 있다. 이러한 이유로 Iterable Interface의 iterator()을 구현할 경우에도 문제가 발생할 수 있다.
다음 링크 참고


✔️ Comparator와 Comparable

  • 인퍼페이스로 컬렉션을 정렬하는 데 필요한 메서드를 정의하고 있음
public interface Comparator {
	int compare(Object o1, Object o2);
    boolean equals(Object obj);
}

public interface Comparable {
	public it compareTo(Object o);
}

1. Comparator

  • 기본 정렬기준 외에 다른 기준으로 정렬하고자 할 때 사용

2. Comparable

  • 기본 정렬기준을 구현하는데 사용
profile
2023.09 ~ 티스토리 이전 / 2024.04 ~ 깃허브 블로그 이전

0개의 댓글