[英]Sorting Map<String, List<Object>> using java 8
如何使用值中的数据对地图进行排序 示例: Map<String, List<someObject>>
是我的输入。 我需要排序并获取someObject.getVar2()
的顺序
例子:
class SomeObject{
String var1;
String var2;
String var3;
// getters and setters
}
输入:
条目 1:
{
Key1 = 123
[
someObject
[
var1=4
var2=5
var3=6
]
]
}
条目 2:
{
Key1 = 456
[
someObject
[
var1=2
var2=8
var3=1
]
]
}
条目 3:
{
Key1 = 789
[
someObject
[
var1=1
var2=2
var3=3
]
]
}
根据var2排序后的OUTPUT:
条目 1:
{
Key1 = 789
[
someObject
[
var1=1
var2=2
var3=3
]
]
}
条目 2:
{
Key1 = 123
[
someObject
[
var1=4
var2=5
var3=6
]
]
}
条目 3:
{
Key1 = 456
[
someObject
[
var1=2
var2=8
var3=1
]
]
}
Map 中有 3 个条目,格式为Map<String, List<someObject>>
我需要使用 var2 值对这个 Map 集合进行排序
钥匙进入前:123,456,789
排序后键在:789,123,456
您的输入并不适合您使用的数据结构,即Map<String, List<SomeObject>>
。 由于值中从来没有List
(如果有,则必须重新定义排序逻辑。)因此,您可以简单地将当前输入表示为Map<String, SomeObject>
:
Map<String, SomeObject> input = new HashMap<>(); // initialised with your sample
然后将其排序为:
Map<String, SomeObject> output = map.entrySet()
.stream()
.sorted(Comparator.comparing(o -> o.getValue().getVar2())) // **
.collect(Collectors
.toMap(Map.Entry::getKey, Map.Entry::getValue, (a, b) -> a, LinkedHashMap::new));
** 请注意,表示Number
s(这里主要是Integer
s)然后根据它们进行排序可能不是人们应该想要的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.