자바의 정석 복습하기(컬렉션)

bitna's study note·2022년 6월 8일
0

자바

목록 보기
105/119

6월 8일 복습하기

1.Comparator 와 Comparable
객체 정렬에 필요한 메서드(정렬기준 제공)를 정의한 인터페이스
Comparator:기본정렬기준을 구현하는데 사용
Comparable:기본정렬기준 외에 다른 기준으로 정렬하고자할때 사용

Comparator는 compare 라는 메서드를 가지고 있다.
public interface Comparator{
int compare(Object o1,Object o2); //o1과 o2를 반환해서 int로 반환한다.
반환값이 '0'이면 값이같다. '양수'면 왼쪽이 크고, '음수'면 오른쪽이 크다.
boolean equals(Object obj); // equals를 오버라이딩 해야한다.
}

public interface Comparable{
int compareTo(Object o); //주어진 객체o와 자신(this)와 비교
}

2.정렬 sort()
두대상을 비교하고,자리바꾸는걸 정렬의 원리
이때 비교를 할때 정렬기준을 세워줘야하는데, Comparator와 Comparable를 사용한다.

3.HashSet-순서X, 중복X
Set인터페이스를 구현한 대표적인 컬렉션 클래스이다.
순서를 유지하고 싶으면, LinkedHashSet클래스를 사용하면된다.
Set은 데이터를 저장할때 equals()와 hashCode()를 호출하여 중복을 체크하는데, 기본데이터는 자동적으로 중복제거가 되지만
***객체를 저장할때는 equals()와 hashCode()이 오버라이딩 해줘야 중복제거가됨!!!

4.TreeSet-순서X, 중복X, 정렬O
이진탐색트리로 구현,범위 탐색과 정렬에 유리하다.
이진트리는 모든 노드가 최대2개의 하위 노드를 가지고있음
범위검색과 정렬에 유리한 컬렉션 클래스 이다.
HashSet보다 데이터 추가삭제에 오래걸린다.

5.이진탐색트리
부모보다 작은 값을 왼쪽에, 큰 값을 오른쪽에 저장
데이터가 많아질수록 추가,삭제에 시간이 걸림(좌우 비교횟수증가로 인함)
***객체를 저장할때는 equals()와 hashCode()이 오버라이딩 해줘야 중복제거가됨!!!

6.HashMap과 Hashtable-순서X, 중복(키X,값O)
Map인터페이스를 구현, 데이터를 키와 값의 쌍으로 저장
Hashtable은 old버젼으로 동기화가 되어있고,
HashMap은 new버젼으로 동디화가 안되어있다.
순서를 유지하고 싶으면 LinkedHashMap클래스를 사용하면 된다.
TreeMap 범위검색과 정렬에 유리한 컬렉션 클래스,HashMap보다 데이터 추가,삭제에 시간이 더 걸림.

7.HashMap의 키와 값
해싱기법으로 데이터를 저장,데이터가 많아도 검색이 빠르다.
Map인터페이스를 구현,데이터를 키와값 쌍으로 저장한다.
키가 같은데, 값이 다르다면 마지막값만 저장된다.

8.해싱
어떤 키와 값을 알려주면 배열의 저장위치를 알려준다.
해쉬함수를 이용하여 해시테이블에 저장과 읽어오기를 할수 있다.
읽어올때 해쉬코드(저장위치)를 반환한다.

해시테이블은 배열과 링크드리스트가 조합된 상태.

(1)키로 해시함수를 호출하여 해시코드를 반환한다.
(2)해시코드에 대응하는 링크드리스트를 배열에서 찾는다.
(3)링크드리스트에서 키와 일치하는 데이터를 찾는다.

profile
좋은개발자가 되기위한 삽질기록 노트

0개의 댓글

관련 채용 정보