'我正在使用休眠模式,我打算使用LinkedHashMap
对元素进行排序,
但这不起作用,因为我无法进行初始化,因此我通过控制器进行了排序,因此它可以工作,但不是很好,这是我的排序方法。
public LinkedHashMap<String, Indicador> OrdenarMap(Map<String, Indicador> map) {
LinkedHashMap<String, Indicador> sortedMap = new LinkedHashMap<>();
map.entrySet()
.stream()
.sorted(Map.Entry.comparingByKey())
.forEachOrdered(x -> sortedMap.put(x.getKey(), x.getValue()));
return sortedMap;
}
我想要这样的订单
{1 Objetivo General, 1.1 Objetivo Especifico, 2 Objetivo General} 等等...
答案 0 :(得分:1)
查看TreeMap
。按键的自然顺序排序
基于Red-Black树的NavigableMap实现。地图已排序 根据其键的自然顺序,或由比较器 在地图创建时提供,具体取决于使用哪个构造函数。
https://docs.oracle.com/javase/8/docs/api/java/util/TreeMap.html
构造函数还可以使用键的比较器进行自己的排序。
答案 1 :(得分:1)
将TreeMap与自定义Comparator一起使用。
默认情况下,字符串比较器按字典顺序比较字符串,这就是为什么您看到这样的std::function
顺序的原因。
由于我假设您的密钥将始终为双精度,因此该比较器应该可以工作:
std::function<bool(int a, int b)>> pq([this](int a, int b){
return std::abs(a - m_reference) < std::abs(b - m_reference);
});