我有ImmutableMap<String, Integer>
和List<String>
来定义订单。我想通过该订单获得ImmutableList<Integer>
。例如:
map (<"a", 66>, <"kk", 2>, <"m", 8>)
list ["kk", "m", "a"]
结果我想要给定列表中另一个定义顺序的值列表:[2, 8, 66].
在java中执行此操作的最佳方法是什么?
答案 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可以利用多核架构,而无需编写单行多线程代码。