如何将 Map<String, String> 转换为 String[],在键和值之间交替?

ZZZ*_*ZZZ 0 java lambda

我试图找到一种方法来转换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)

Enz*_*nzo 6

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)