如何解决从2个共享JAVA中相同属性的地图中获取对象的有序列表
我有一张地图,该地图具有我期望的顺序(排名)
sortedMap {deviceid:rank}:
{0:"id0"},{1,"id1"},{2:"id2"},{3:"id3"},
还有另一幅需要排序的地图
{"id3":object3},{"id1":object1},{"id0":object0},{"id2":object2}
我希望有类似的列表
{object0},{object1},{object2},{object3}
我尝试使用下面的代码,但是列表在我的代码中添加了一部分似乎是错误的,而且我不知道有什么更好的解决方案:
private List<MyObject> getSortedResultList(Map<String,Integer> sortedMap,Map<String,Object> toSortMap) {
List<MyObject> sortedResultList = null;
for (Integer rank : sortedMap.keySet()) {
for (int i = 0; i < sortedMap.size(); i++) {
sortedResultList.add(i,(MyObject) toSortMap.get(sortedMap.get(rank)));
}
}
return sortedResultList;
}
由于我缺乏数据结构知识,试图在网上搜索了几个小时,没有任何线索可以解决,因此决定从这里寻求帮助。谢谢您提出任何建议。
解决方法
这是一种实现方法:
events: {
load: function() {
var point = this.series[0].points[0],xAxis = this.xAxis[0],x1 = xAxis.toValue(point.shapeArgs.x + this.plotTop),x2 = xAxis.toValue(
point.shapeArgs.x + point.shapeArgs.width + this.plotTop
);
xAxis.update({
tickPositions: [x1,x2]
});
}
}
首先对条目进行排序,然后获得相应的对象,然后过滤掉空值,最后将所有内容收集在列表中。
,如果sortedMap
按键排序(例如,它是TreeMap
),则足以建立按sortedMap
的值排序的列表:
private static List<MyObject> getSortedResultList(TreeMap<Integer,String> sortedMap,Map<String,MyObject> toSortMap) {
return sortedMap.values().stream()
.map(key -> toSortMap.get(key))
.collect(Collectors.toList());
}
如果sortedMap
需要另外排序:
private static List<MyObject> getSortedResultList2(Map<Integer,MyObject> toSortMap) {
return sortedMap.entrySet().stream()
.sorted(Map.Entry.comparingByKey())
.map(entry -> toSortMap.get(entry.getValue()))
.collect(Collectors.toList());
}
测试:
Map<Integer,String> sorted = new TreeMap<>(Map.of(1,"id1","id0",3,"id3",2,"id2"));
Map<String,MyObject> toSort = Map.of(
"id3",new MyObject("object3"),new MyObject("object1"),new MyObject("object0"),"id2",new MyObject("object2")
);
System.out.println(getSortedResultList(sorted,toSort));
System.out.println(getSortedResultList2(sorted,toSort));
两个输出相同:
[MyObject(field=object0),MyObject(field=object1),MyObject(field=object2),MyObject(field=object3)]
[MyObject(field=object0),MyObject(field=object3)]
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。