簡體   English   中英

Java數據結構允許對象上的布爾標志和排序?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM