按java键对LinkedHashMap进行排序
所以我是一个新手,我在地图上苦苦挣扎。我有一张地图,我想按键按升序排列。但我似乎找不到任何解决办法。谢谢你的帮助
LinkedHashMap<String, String> resulting= new LinkedHashMap<>();
resulting=resulting.entrySet().stream().sorted((a,b)->{
String first=a.getKey();
String second=b.getKey();
return first.compareTo(second)
});
# 1 楼答案
LinkedHashMaP是基于插入顺序排序的。如果希望LinkedHashMap的自然顺序反映某些对象的排序标准,则必须先在这些对象上建立该顺序,然后再将该顺序的对象添加到新的LinkedHashMap实例中
换句话说:您不能更改现有LinkedHashMap上的顺序-因为当您最初将元素添加到该映射时,顺序是固定的!或者更准确地说:您只能通过扩展LinkedHashMap类并将的行为更改为打破其契约来实现这一点。但这没有道理。您只是使用了错误的数据结构来实现您的需求
如果您想要一个基于排序标准对重新排序的映射,您应该查看一个树映射,例如
长话短说:您必须区分“基于插入顺序的顺序”和“基于排序条件的顺序”。你想要的是后者,而LinkedHashMap是错误的