[Collection] Java의 Set과 hashCode()
·
Java/Collection
SetSet란 유일한 요소들의 컬렉션이다.중복된 요소를 허용하지 않으며, 요소를 추가할 때 이미 존재하는 요소는 무시된다.그리고 순서를 보장하지 않기 때문에 출력시 입력 순서와 다를 수 있다.셋은 요소의 유무를 빠르게 확인할 수 있도록 최적화 되어있다. 이는 데이터의 중복을 방지하고 빠른 조회를 가능케한다.add()로 데이터를 추가할 때 Set에 중복되어있는 데이터가 있는지 항상 확인해야한다. 따라서 처음에 데이터를 추가할 때는 O(1)이지만 그 이후로는 중복된 데이터가 있는지 찾기 때문에 O(n)이다.  중복 데이터 검색 O(n) + 데이터 입력 O(1)= O(n).contains() 로 데이터를 찾을 때는 배열에 있는 모든 데이터를 찾고 비교해야 하므로 평균 O(n)이 걸린다. 즉 데이터를 추가할 때..
[Collection] Java의 TreeSet의 특징 및 구조
·
Java/Collection
TreeSetTreeSet은 이진 탐색 트리를 개선한 레드 - 블랙 트리를 내부에서 사용한다. TreeSet의 특징순서 : 요소들은 정렬된 순서로 지정된다. 순서의 기준은 Comparator로 변경할 수 있다.시간 복잡도: 주요 연산들은 O(log n) 의 시간 복잡도를 가진다. 따라서 HashSet 보다는 느리다.용도: 데이터들을 정렬된 순서로 유지하면서 집합의 특성을 유지해야 할 때 사용한다.예를 들어, 범위 검색이나 정렬된 데이터가 필요한 경우에 유용하다. 참고로 입력된 순서가 아니라 데이터 값의 크고 낮음으로 정렬이 된다. 예를 들어 3, 1, 2를 순서대로 입력해도 1,2,3, 순서로 출력된다.트리의 구조TreeSet은 내부적으로 트리 구조(정확히는 이진 탐색 트리의 일종인 레드-블랙 트리)를 ..
cheolhyeon
'Set' 태그의 글 목록