我有一个带有String键的TreeMap和一个Class的实例作为值。我希望能够对类的对象进行排序。我已经走到了这一步:
public class StockTakeCompare {
public static TreeMap<String, StockItem> sortByValues(final Map<String, StockItem> treeMap) {
Comparator<StockItem> valueComparator =
new Comparator<StockItem>() {
public int compare(StockItem o1, StockItem o2) {
int res = o1.Name.compareTo(o2.Name);
return res != 0 ? res : 1; // to preserve items with equal values
}
};
//THIS LINE THROWS AN ERROR:
TreeMap<String, StockItem> sortedByValues = new TreeMap<String, StockItem>(valueComparator);
sortedByValues.putAll(treeMap);
return sortedByValues;
}
}
该行:
TreeMap<String, StockItem> sortedByValues = new TreeMap<String, StockItem>(valueComparator);
给出了这个错误:
错误:找不到适合TreeMap(Comparator)的构造函数。
这是有道理的,但还有另一种方法可以实现我的目标吗?
这不是重复的。我的问题是关于在TreeMap中使用类作为值并对这些类的对象进行排序。 &#34;重复&#34;仅将原始作为值处理
答案 0 :(得分:1)
采用比较器的TreeMap构造函数为TreeMap(Comparator<? super K> comparator)
。
换句话说,TreeMap只会根据键进行排序,而不是根据您的示例尝试的值进行排序。
修改:更完整的答案 - Java TreeMap Comparator