2016-08-03 63 views

回答

1

根据您的分数使您的结构实现Comparable,并使用地图按键存储实例,并使用SortedSet按分数排序实例。

+0

仅解决其中一个要求 –

+0

请参阅我的编辑。 – Andres

2

您需要两个集合/数据结构。 我建议使用自定义对象:

public class GiveMeANamePlease implements Comparable<GiveMeANamePlease>{ 
    private final String key; 
    private final float score; 
    // add constructor, getter, compareTo, equals and hashcode 
} 

你可以使用一个HashMap<String, GiveMeANamePlease>通过键来执行查找和TreeSet<GiveMeANamePlease>按分数排序。

可以弹出的最低元素在TreeSet中是这样的:

treeSet.remove(treeSet.first()); 

这是不是很大,因为它需要一个双查找(效率低下,不是线程安全的)。

提示:如果你只是想弹出最低,这将是更有效地存储在Min-Heap比分,但没有标准的Java实现这一点。

0

在我的知识中没有单一的具有这种管理能力的集合类型。

对于存储我会使用一个地图。对于最低/最高分数,我会得到地图的EntrySet并使用它创建第二个按照值排序条目的Collection。