(9) TreeSet
·
자바/컬렉션 프레임워크
1. TreeSet에 대한 기본 개념 - 이진 검색 트리의 자료구조 형태로 데이터를 저장하는 컬렉션 클래스이다. - 이진 검색 트리의 특성상 정렬, 검색, 범위 검색에 높은 성능을 가지고 있으며, TreeSet은 이 자료구조의 성능을 향상시킨 '레드-블랙 트리'로 구현되어 있다. - 구조는 트리이기 때문에 데이터를 순차적으로 저장하는 것이 아닌 저장위치를 찾아서 저장해야 하고, 삭제하는 경우 트리의 일부를 재구성해야하므로 링크드 리스트보다 데이터 추가/삭제하는 것이 느리다. - 그러나 정렬된 상태를 저장하기 때문에 단일 값 검색과 범위 검색이 매우 빠르다. - 메서드에 대한 자세한 내용은 자바의 정석 640p를 참고한다. ( 위 그림은 이진 검색 트리의 구조를 보여주며 맨 위의 노드는 '부모 노드', 왼..
(8) HashSet
·
자바/컬렉션 프레임워크
1. HashSet의 기본 개념 - Set 인터페이스를 구현한 가장 대표적인 컬렉션이며, 기본적으로 중복된 요소를 저장하지 않고 저장순서 또한 유지하지 않는다. - 만약 중복된 요소를 추가한다면, false를 반환하게 된다. - 만약 저장순서를 유지하고 싶다면, LinkedHashSet을 사용한다. - HashSet 메서드의 상세한 내용은 자바의 정석 631p를 참고한다. 1-1. HashSet을 이해하기 위한 예제(1) : HashSet의 중복을 확인하는 예제이다. 1-2. HashSet을 이해하기 위한 예제(2) : 6자리 로또 번호 랜덤 생성하는 예제이다. 1-3. HashSet을 이해하기 위한 예제(3) : 6자리 로또 번호 랜덤 생성하는 예제이다. ( 정렬 기준은 set에 저장된 Integer ..
(7) Comparator와 Comparable
·
자바/컬렉션 프레임워크
1. Comparator와 Comparable - Arrays.sort()는 Character 클래스의 Comparable의 구현에 의해 정렬된 것이다. - Comparable을 구현하는 클래스는 같은 타입의 인스턴스끼리 서로 비교할 수 있는 클래스들인 Integer와 wrapper, String, Date, File 같은 것들이며 기본적으로 오름차순으로 구현되어 있다. - 아래의 코드는 Comparator와 Comparable의 인터페이스 구조이다. ( Comparator는 java.util 패키지에 있고, Comparable은 java.lang 패키지에 있다. ) - 만약 오름차순이 아닌 내림차순과 같은 새로운 기준에 의해서 정렬되고 싶다면, Comparator를 사용한다. 1-1. Comparato..
(6) Arrays
·
자바/컬렉션 프레임워크
1. Arrays 클래스의 메서드들 (1) copyOf(), copyOfRange() (2) fill(), setAll() (3) sort(), binarySearch() ( binarySearch()는 꼭 정렬된 배열만 수행할 수 있으며, 정렬되지 않았다면 잘못된 결과를 전달한다. ) (4) deepEquals(), deepToString() : 각각 다차원 배열을 다룰 때 사용되는 메서드이다. (5) asList(Object... a) ( 그냥 list에 Arrays.asList를 한다면 add가 불가능하다. )