728x90
자바의 정석 챕터 11을 읽고 정리
1.4 Hashset
- Hashset은 Set 인터페이스를 구현한 가장 대표적인 컬렉션
- 중복된 요소를 저장하지 않음
- 저장순서를 유지하지 않음
Object[] objArr = {"1", new Integer(1), "2", "2", "3", "3"};
Set set = new Hashset();
for (int i = 0; i < objArr.length; i++) {
set.add(objArr[i]);
}
System.out.println(set); // [1, 1, 2, 3]
- "1", "1"은 눈으로 볼 때는 같지만 첫 번째는 String 인스턴스이고, 하나는 Integer 인스턴스라서 중복으로 보지 않음
- 순서 보장을 원하면 LinkedHashSet 사용
- lotto 번호 생성 예제
Set set = new HashSet();
for (int i = 0; set.size() < 6; i++) {
int num = (int)(Math.random() * 45) + 1;
set.add(new Integer(num));
}
List list = new LinkedList(set)
Collection.sort(list);
1.5 TreeSet
- TreeSet은 이진 검색 트리라는 자료구조의 형태로 데이터를 저장하는 컬랙션 클래스.
- 정렬, 검색, 범위검색에서 성능이 좋음
- Set이므로 순서와 중복을 허용하지 않음
- 데이터의 추가, 삭제는 리스트보다 더 오래 걸리지만, 검색, 정렬은 빠르다.
- lotto 번호 생성 예제
Set set = new TreeSet();
for (int i = 0; set.size() < 6; i++) {
int num = (int)(Math.random() * 45 ) + 1;
set.add(num) // set.add(new Integer(num));
}
// TreeSet은 저장할 때 정렬한다.
- 범위 검색
TreeSet set = new TreeSet();
set.add("alien");
set.add("bat");
set.add("car");
set.add("dance");
String from = "b";
String to = "d";
System.out.println(set.subSet(from, to)); // [bat, car, dance]
1.6 HashMap
- HashMap은 해싱(hashing)을 사용하기 때문에 많은 양의 데이터를 검색하는데 성능이 좋다.
# 해싱
키(Key) 값을 해시 함수(Hash Function)라는 수식에 대입시켜 계산한 후 나온 결과를 주소로 사용하여 바로 값(Value)에 접근하게 할 수 하는 방법
1.7 TreeMap
- 이진검색트리의 형태로 키와 값의 쌍으로 이루어진 데이터를 저장
- 검색은 HashMap이 빠르지만, 범위검색이나 정렬은 TreeMap이 빠르다.
728x90
'개발 > Java&Kotlin' 카테고리의 다른 글
[Spring] 스웨거(Swagger) 라이브러리 (1) | 2022.08.17 |
---|---|
[Java] Generics (1) | 2022.08.17 |
[Java] 컬렉션 프레임워크 (1) (1) | 2022.08.12 |
[Spring] 스프링 시큐리티 (3) (2) | 2022.08.12 |
[Java] 객체 지향 설계 5원칙 - SOLID (0) | 2022.08.06 |