java根据键列表从immutablemap获取排序值

时间:2016-10-13 15:24:47

标签: java

我有ImmutableMap<String, Integer>List<String>来定义订单。我想通过该订单获得ImmutableList<Integer>。例如:

map (<"a", 66>, <"kk", 2>, <"m", 8>) 

list ["kk", "m", "a"]

结果我想要给定列表中另一个定义顺序的值列表:[2, 8, 66].

在java中执行此操作的最佳方法是什么?

2 个答案:

答案 0 :(得分:5)

如果没有流,您可以使用简单的for循环:

List<Integer> valuesInOrder = new ArrayList<>(map.size());
for(String s : list) {
    valuesInOrder.add(map.get(s));
}

如果你想使用你可以做的流:

List<Integer> valuesInOrder =
    list.stream().map(map::get).collect(Collectors.toList());

答案 1 :(得分:1)

试试这个,

List<Integer> numbers= new ArrayList<>(map.size());
for(String l : list) {
    numbers.add(map.get(l));
}
来自 Java 8

的示例
List<Integer> numbers= list.stream().map(map::get).collect(Collectors.toList());
Java SE 8来救援! Java API附带了一个名为Stream的新抽象,它允许您以声明方式处理数据。 Streams可以利用多核架构,而无需编写单行多线程代码。