내가 살아가는 방식...

karma01.egloos.com

포토로그



Hashset, LinkedHashSet, TreeSet JAVA

HashSet은 Set인터페이스를 구현한 가장 대표적인 컬렉션이며, Set 인터페이스의 특징대로 HashSet은 중복된 요소를 저장하지 않습니다.

HashSet에 새로운 요소를 추가할 때는 add메서드나 addAll메서드를 사용하는데, 만일 HashSet에 이미 저장되어 있는 요소와 중복된 요소를 추가하고자 한다면 이 메서드들은 false를 반환함으로써 중복된 요소이기 때문에 추가에 실패했다는 것을 알려줍니다.

HashSet은 저장순서를 유지하지 않으므로 저장순서를 유지하고자 한다면 LinkedHashSet을 사용해야합니다.

아래 HashSet의 예제를 보도록 합시다.

그럼 저장순서를 유지하는 LinkedHashSet의 예제를 아래에서 함 보도록 하겠습니다.

TreeSet은 이진검색트리(binary search tree)라는 자료구조의 형태로 데이터를 저장하는 컬렉션 클래스입니다.

이진검색트리는 정렬, 검색, 범위검색(range search)에 뛰어난 성능을 보이는 자료구조이며 TreeSet은 이진검색트리의 성능을 향상시킨 레드-블랙 트리(Red-Black tree)로 구현되어 있습니다.

그리고 Set인터페이스를 구현했으므로 중복된 데이터의 저장을 허용하지 않으며 정렬된 위치에 저장하므로 저장순서를 유지하지도 않습니다.

이진트리(binary tree)는 링크드리스트처럼 여러 개의 노드가 서로 연결된 구조로, 각 노드에 최대 2개의 노드를 연결 할 수 있으며 루트(root)라고 불리는 하나의 노드에서 부터 시작해서 계속 확장해 나갈 수 있습니다.

위 아래로 연결된 두 노드를 부모-자식관계에 있다고 하며 위의 노드를 부모노드, 아래의 노드를 자식노드라고 합니다. 부모-자식관계는 상대적인 것이며 하나의 부모노드는 최대 두 개의 자식노드와 연결될 수 있습니다.

class TreeNode {

TreeNode left; // 왼쪽 자식노드

Object element; // 객체를 저장하기 위한 참조변수

TreeNode right; // 오른쪽 자식노드

}

이진검색트리는 검색과 정렬에 유리하지만 노드의 추가 삭제에 시간이 걸리는 단점이 있습니다.

그럼 아래의 TreeSet의 예제를 보겠습니다.


덧글

댓글 입력 영역