我试图找到一种方法来转换Map<String,String>为String[]使用 Java 8 的方式。
一张地图
{"A":"a", "B","b", "C", "c"}`
Run Code Online (Sandbox Code Playgroud)
应该转换为
["A", "a", "B", "b", "C", "c"] or ["B", "b", "C", "c", "A", "a"] ...
Run Code Online (Sandbox Code Playgroud)
对的顺序无关紧要,但键/值对必须在一起。
这样做的旧方法很明显:
Map<String, String> headers = .......
String[] array = new String[headers.size() * 2];
int i = 0;
for(Map.Entry<String, String> entry : headers.entrySet()) {
array[i++] = entry.getKey();
array[i++] = entry.getValue();
}
Run Code Online (Sandbox Code Playgroud)
import java.util.Map;
import java.util.Arrays;
import java.util.HashMap;
import java.util.stream.Stream;
class Main {
private static String[] transform(Map<String, String> map) {
return map.entrySet().stream()
.flatMap(entry -> Stream.of(entry.getKey(), entry.getValue()))
.toArray(String[]::new);
}
public static void main(String[] args) {
Map<String, String> map = new HashMap<>();
map.put("A", "a");
map.put("B", "b");
map.put("C", "c");
String[] result = transform(map);
System.out.println(Arrays.toString(result));
// Output: [A, a, B, b, C, c]
}
}
Run Code Online (Sandbox Code Playgroud)