我在Java中有一个带有字符串键和浮点数的结构。我想将它们存储在一个集合中,在其中可以通过键进行简单查找,或者“弹出”具有最低分数的项目。

我该怎么办?

最佳答案

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

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实现。

关于java - 通过键查找Java集合,按值排序,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38749015/

10-13 09:12
查看更多