我正在尝试<Integer,Double>
使用 aTreeMap
和 a对类型的哈希图进行排序SortedMap
我想对 s 的绝对值进行排序,Double
但我也想保留符号值(因此不存储为 unsigned Double
)。
下面是我正在使用的代码,但是我没有得到我期望的值,大概是由于使用了hashcode()
任何人都可以指出如何解决这个问题?
Map<Integer,Double> termWeights = new HashMap<Integer,Double>();
SortedMap sortedData = new TreeMap(new ValueComparer(termWeights));
System.out.println(termWeights);
sortedData.putAll(termWeights);
System.out.println(sortedData);
class ValueComparer implements Comparator {
private Map _data = null;
public ValueComparer(Map data) {
super();
_data = data;
}
public int compare(Object o1, Object o2) {
Double e1 = Math.abs((Double) _data.get(o1));
Double e2 = Math.abs((Double) _data.get(o2));
int compare = e2.compareTo(e1);
if (compare == 0) {
Integer a = o1.hashCode();
Integer b = o2.hashCode();
return b.compareTo(a);
}
return compare;
}
}
谢谢