是否可以使用Stream API从Map <String,String>中创建String [] []?

Art*_*tem 0 java arrays java-8 java-stream

是否可以通过Stream API从HashMap中创建String [] []?

我试图得到这样的东西:

Map<String, String> map = new HashMap<>();
    map.put("key1", "value1");
    map.put("key2", "value2");
    map.put("key3", "value3");   => 

 => String[][] 2dArray => [["key1", "value1"], ["key2", "value2"], ["key3", "value3"]]
Run Code Online (Sandbox Code Playgroud)

我已经用简单的java做了同样的事情:

    Set<Map.Entry<String, String>> entrySet = map.entrySet();

    String[][] result = new String[3][2];
    int i = 0;
    for (Map.Entry<String,String> entry : entrySet){
            result[i][0] = entry.getKey();
            result[i][1] = entry.getValue();
            ++i;
    }
Run Code Online (Sandbox Code Playgroud)

Era*_*ran 6

是。您可以流过的条目集的Mapmap每个条目包含键和值,并转换成一个数组Stream<String[]>到2D阵列toArray()

String[][] arr = 
    map.entrySet()
       .stream() // Stream<Map.Entry<String,String>>
       .map(e -> new String[] {e.getKey(),e.getValue()}) // Stream<String[]>
       .toArray(String[][]::new); // String[][]
System.out.println(Arrays.deepToString (arr));
Run Code Online (Sandbox Code Playgroud)

输出:

[[key1, value1], [key2, value2], [key3, value3]]
Run Code Online (Sandbox Code Playgroud)