gpt4 book ai didi

java - Java 中的 map 排序不起作用

转载 作者:行者123 更新时间:2023-12-02 15:00:49 26 4
gpt4 key购买 nike

我正在尝试使用 Comparator 接口(interface)对 TreeMap(以 Double 作为值,以 Integer 值作为键)进行排序,但它不起作用。

// Create a tree map
TreeMap tm = new TreeMap();
// Put elements to the map
tm.put(1, new Double(3434.34));
tm.put(0, new Double(123.22));
tm.put(4, new Double(1378.00));
tm.put(2, new Double(99.22));
tm.put(3, new Double(-19.08));
List<Map.Entry> valueList = new ArrayList(tm.entrySet());

// Collections.sort(valueList, new Sort());

Collections.sort(valueList, new Sort());

HashMap sortedMap = new HashMap();

// Get an iterator
Iterator<Map.Entry> i = valueList.iterator();

// Display elements
while (i.hasNext()) {
Map.Entry object = i.next();
sortedMap.put(object.getKey(), object.getValue());
}
List sortedList = new ArrayList(sortedMap.entrySet());
Iterator<Map.Entry> iterator = sortedList.iterator();
while (iterator.hasNext()) {
Map.Entry entry = iterator.next();
System.out.println("Value " + entry.getValue() + "\n");
}

以下是我的比较器类

public class Sort implements Comparator<Map.Entry> {

@Override
public int compare(Map.Entry o1, Map.Entry o2) {
// TODO Auto-generated method stub
double valueOne = (Double) o1.getValue();
double valueTwo = (Double) o2.getValue();

int returnValue =
valueOne > valueTwo ? -1 : (valueOne == valueTwo ? 0 : 1);

return (valueOne > valueTwo ? -1 : (valueOne == valueTwo ? 0 : 1));
}

}

但是我得到以下输出

Value 123.22

Value 3434.34

Value 99.22

Value -19.08

Value 1378.0

Edited Part

public int compare(Map.Entry o1, Map.Entry o2) {
// TODO Auto-generated method stub
double valueOne = ((Double) o1.getValue()).doubleValue();
double valueTwo = ((Double) o2.getValue()).doubleValue();

int returnValue =
valueOne > valueTwo ? -1 : (valueOne == valueTwo ? 0 : 1);

return (valueOne > valueTwo ? -1 : (valueOne == valueTwo ? 0 : 1));
}

最佳答案

HashMap 本质上是无序的。

相反,您可以首先使用比较器创建一个 TreeMap

关于java - Java 中的 map 排序不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10316928/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com