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)
是。您可以流过的条目集的Map,map每个条目包含键和值,并转换成一个数组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)