2012-09-07 2 views
1

컬렉션에서 우리는 요구 사항에 따라 집합이나지도를 정렬 할 수있었습니다. Treeset 또는 TreeMap은 정렬 된 컬렉션도 제공합니다. 우리가 수집 분류 필요할 때 TreeSet의를 사용하여 어떤 이점이 있습니까수작업으로 정렬 된 집합을 통해 나무 집합을 갖는 이점

+0

한 가지 이유는 잊어 버렸을 때 (실수로) 잊어 버릴 염려가 없기 때문입니다. –

+0

"수동으로 정렬 된 집합"을 정의 할 수 있습니까? 휠을 사용할 수있을 때 다시 발명하는 것이 합리적입니까? – kosa

+0

당신은'collections.sort()'를 명시 적으로 호출함으로써 수동으로 정렬된다는 것을 의미합니까? –

답변

2

포스터는 이전에 중요한 기준을 언급하지 않은 수 요소는 삽입 중에 만 정렬되기 때문에 이상적이지 않습니다. 나는. TreeSet/TreeMap에있는 요소의 정렬 키를 변경하면 자동으로 다시 정렬되지 않습니다. 요소를 업데이트하기 전에 컬렉션에서 요소를 제거한 다음 요소를 업데이트 한 후 다시 추가해야 요소를 올바른 위치에 삽입 할 수 있습니다. 내 UpdateableTreeSet을 사용하면 TreeSet을 계속 정렬 할 수 있습니다.

위에서 언급했듯이이 경우 아마도 정렬되지 않은 컬렉션에 Collections.sort()을 사용하는 것이 더 쉬운 방법 일 수 있다고 결론 내릴 수 있습니다. 어느 쪽이 전반적으로 빠른지는 상황에 따라 다릅니다. 나는 UpdateableTreeSet 꽤 많이 당신이 정렬 키를 변경 장소로 제한 기존 컬렉션의 정렬을 유지해야 도움이 될 것 같아요.

0

의 가장 큰 차이점은

TreeSet 데이터가 모든 시간과 수동 항상 분류되지 않을 수 있습니다 분류하여 유지 집합을 분류 유지합니다.

그래서 항상 정렬을 유지하지 않으려면 TreeSet을 권장합니다.

0

다른 사람들이 말한 것에 더하여, TreeSet에는 서브 세트를 빨리 얻을 수있는 것과 같은 멋진 기능이 있습니다.

외에도 정렬 된 항목이 필요한 빈도에 대한 질문입니다. 100 세트를 만들고 그 중 하나 또는 두 개만 정렬해야하는 경우 삽입하는 동안 정렬하는 오버 헤드가 그만한 가치가 없을 것입니다. 그러나 세트를 한 번에 분류 할 예정이라면 트리 세트를 사용할 수 있습니다. 이 요구되어 그 어느 때

1

TreeSet의 그것은 항상 도움이됩니다

은 집합을 분류 한합니다. 마지막으로 기본 작업

  • log (n) 시간 비용 (추가, 제거 및 포함)
  • TreeSet의가)가 (처음처럼 정렬 된 세트를 다루는 몇 가지 편리한 방법을,(), 헤드셋() 및 tailSet() 등
  • 비교기를 제공하지 않으면 TreeSet 내부의 항목이 자연 순서에 따라 자동으로 정렬됩니다.

또한 TreeSet 설명서를 참조하십시오. 컬렉션의 요소가 삽입 후 종종 자신의 상태를 변경하는 경우, 당신은 다시 정렬 같은 컬렉션을 여러 번, 어쩌면 TreeSet 또는 TreeMap이 필요 즉 : TreeSet

관련 문제