我在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/