2009-08-25 3 views
4

Google CollectionsMultiset 인터페이스와 TreeMultiset 클래스를 포함하고 있지만, 해당 SortedMultiset 인터페이스가 없다는 사실에 놀랐습니다.왜 Google 컬렉션에 SortedMultiset이 없습니까?

그런 식으로 이산 확률 분포를 모델링하는 데 매우 유용합니다.

직접 구현하려고하기 전에 특별한 이유가 없는지 알고 싶습니다. 예 : 등 Multiset 또는 Collection 불변의 가능성을 위반하거나 고유의 성능 문제는


편집 : 나는 원래 그것을 실현하지 않았다 그러나 이것은 실제로 3 별도의 요청입니다 :

  1. 받는 변경 한 메서드의 반환 유형 (TreeMultiset.entrySet)
  2. 기존 기능과 일치하는 새 인터페이스 TreeMultiset
  3. 트리의 가지에서 개수를 합산하는 새로운 한 쌍의 방법
+0

왜 구현해야합니까? 'TreeMultiset'과 어떻게 다릅니 까? – notnoop

+0

HeadSet/tailSet/subSet에는 TreeMultiset에없는 항목이 있습니다. TreeMultiset을 확장하여 효율적으로 구현할 수 있는지 확실하지 않습니다. – finnw

+0

또한'entrySet()'메소드는 일반'Set' 대신'SortedSet'을 리턴합니다. – finnw

답변

7

아무도 아직 필요하지 않으므로 아직 작성하지 않았다고 생각합니다. 그것은 제가 생각할 수있는 것입니다.

+2

이 질문을 다시 읽는 사람에게는 버전 11부터 SortedMultiset이 있습니다. –

0

TreeMultiset.elementSet()은 원하는 기능을 제공 할 수있는 SortedSet을 반환합니다.

ETA : finnw, 요청한 SortedMultiset 메서드는 "다중 세트의 요소가 42 개 미만입니까?"라는 질문에 대한 훨씬 빠른 답변을 제공하지 않습니다. TreeMultiset 구현은 여전히 ​​다중 세트 항목을 반복하고 관련 요소의 수를 합산해야합니다.

+0

거의. 효율적으로 할 수없는 한 가지는 "다중 세트 의 요소가 42 개 미만입니까?"라는 대답입니다. 요소 세트 (및 headSet/tailSet 메소드)는 42보다 작은 고유 값의 수를 제공하지만 요소 수는 제공하지 않습니다. – finnw