【问题标题】:Is it possible to make a String[][] from a Map<String, String> using the Stream API?是否可以使用 Stream API 从 Map<String, String> 制作 String[][] ?
【发布时间】:2019-08-29 09:42:42
【问题描述】:

是否可以通过 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"]]

我用简单的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;
    }

【问题讨论】:

    标签: java arrays java-8 java-stream


    【解决方案1】:

    是的。您可以将 Mapmap 的每个条目的条目集流式传输到包含键和值的数组,然后将 Stream&lt;String[]&gt; 转换为带有 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));
    

    输出:

    [[key1, value1], [key2, value2], [key3, value3]]
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-07-08
      • 2017-11-22
      • 1970-01-01
      • 2018-08-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-31
      相关资源
      最近更新 更多