Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/306.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Java8中从hashmap中获取值_Java_Hashmap_Java Stream - Fatal编程技术网

如何在Java8中从hashmap中获取值

如何在Java8中从hashmap中获取值,java,hashmap,java-stream,Java,Hashmap,Java Stream,我正在尝试使用stream将下面的代码重构为java8。 如何获取hashmap中任何特定键的值 请建议 import java.util.Arrays; import java.util.HashMap; import java.util.List; import java.util.Map; public class HashMapUtility { public static void main(String[] args) { Map<String, List<I

我正在尝试使用stream将下面的代码重构为java8。 如何获取hashmap中任何特定键的值 请建议

import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

public class HashMapUtility {

public static void main(String[] args) {
    Map<String, List<Integer>> map = new HashMap<>();
    map.put("key1", Arrays.asList(1, 2, 3, 4));
    map.put("key2", Arrays.asList(4, 5, 6, 7));
    map.put("key3", Arrays.asList(8, 9, 10, 11));
    map.put("key4", Arrays.asList(12, 13, 14, 15));

    /*how to write it in JAVA8*/
    for (Map.Entry<String, List<Integer>> mapIter : map.entrySet()) {
        List<Integer> li = mapIter.getValue();
        for (Integer num : li) {
            if (num % 2 == 0) {
                System.out.println(num);
            }
        }
    }
}
导入java.util.array;
导入java.util.HashMap;
导入java.util.List;
导入java.util.Map;
公共类HashMapUtility{
公共静态void main(字符串[]args){
Map Map=newhashmap();
map.put(“key1”,Arrays.asList(1,2,3,4));
map.put(“key2”,Arrays.asList(4,5,6,7));
map.put(“key3”,Arrays.asList(8,9,10,11));
map.put(“key4”,Arrays.asList(12,13,14,15));
/*如何用JAVA8编写它*/
对于(Map.Entry映射器:Map.entrySet()){
List li=mapIter.getValue();
for(整数num:li){
如果(数值%2==0){
系统输出打印项数(num);
}
}
}
}

}

您需要使用
flatMap
将嵌套列表转换为平面列表。之后,您可以执行常见的流操作,如
filter
forEach

public static void main(String[] args) {
  Map<String, List<Integer>> map = new HashMap<>();
  map.put("key1", Arrays.asList(1, 2, 3, 4));
  map.put("key2", Arrays.asList(4, 5, 6, 7));
  map.put("key3", Arrays.asList(8, 9, 10, 11));
  map.put("key4", Arrays.asList(12, 13, 14, 15));    

  map.values().stream()
    .flatMap(List::stream)
    .filter(num -> num % 2 == 0)
    .forEach(System.out::println);
}
publicstaticvoidmain(字符串[]args){
Map Map=newhashmap();
map.put(“key1”,Arrays.asList(1,2,3,4));
map.put(“key2”,Arrays.asList(4,5,6,7));
map.put(“key3”,Arrays.asList(8,9,10,11));
map.put(“key4”,Arrays.asList(12,13,14,15));
map.values().stream()
.flatMap(列表::流)
.filter(数值->数值%2==0)
.forEach(System.out::println);
}

看看方法集合#stream、stream、flatMap、stream、filter和stream#forEachIs这是一个家庭作业问题吗?@Turing85-是的,你的家庭作业问题我不太确定我是否理解你的评论。你贴的问题是家庭作业问题吗?