[英]Sorting Java List using Map Values
我有一张Map
和一张List
。 该List
应基于Map
键值进行排序。 例如:
Map = (<2,"Andy">,<4,"Karl">)
List = ("Kathy","Andy","Yiri","Jun","Karl")
我必须对List进行排序,以使index((2:Andy)在那,而index(4:Karl)在那。 对于其余元素,顺序无关紧要。 其余条件为:
我能够在2个循环中执行此操作,我很好奇是否可以在单个循环中实现此操作。
您可以使用1循环遍历地图中的所有键,并使用indexOf(Object)
在List中搜索indexOf(Object)
,然后使用set
两次将对象交换到正确位置。
伪代码(看起来像Java):
Set<Map.Entry<Integer, String>> entrySet = map.entrySet();
for (Map.Entry<Integer, String> e: entrySet) {
int index;
if ((index = list.indexOf(e.getValue())) >= 0 && index != e.getKey()) {
list.set(index, list.set(e.getKey(), e.getValue()));
}
}
好吧,复杂性不是那么好:O(nk)其中n是List中的元素数,k是Map中的元素数。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.