[英]Java data structure to allow boolean flags on objects and sorting?
我希望有一組將對象標記為“已訪問”或未標記的對象和布爾值。 自然地,我想到了Map,它將告訴我是否已訪問對象。 但是我也希望對它們進行排序,以便每當我問“誰訪問過的“最小”對象是誰?”。 在該數據結構上的最大值O(n)不會太難計算。 在我的特定情況下,我要問的是Date對象,但這無關緊要。 可以隨時將對象添加到該數據結構中,並將使用“ false”值輸入。
使用SortedSet
。 訪問對象時,將其添加到集合中。 要確定是否訪問過對象,只需使用set.contains()
。 查找最小的對象:
T smallest = set.isEmpty() ? null : set.iterator().next();
您可以使用<Boolean, TreeSet<Object>>
的映射,在該映射中,將集合中的所有已訪問對象都映射為true
,反之亦然(假設您不處理重復的對象)。 我相信插入TreeSet
時間為O(n),要訪問“最小”對象,您可以使用first()
,其運行時間為O(1)。
您需要的是番石榴的TreeMultiset,請閱讀有關Multiset的信息,TreeMultiset實現可維護其元素的順序。 您可以編寫一個自定義的比較器-首先,您可以擁有最常訪問的對象。
https://code.google.com/p/guava-libraries/wiki/NewCollectionTypesExplained
如果使用它,您將不會有類似的結構
Collection<Something, Something>
並在實現比較器后立即進行排序。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.