bob*_*sie 1 arrays java-8 java-stream
我试图找出一个简单的转换的最优雅的方式int排列(例如{1, 2, 3}),以一个简单的String阵列(例如,{"id", "1", "id", "2", "id", "3"}使用Java 8流串对).
传统上代码如下: -
int[] input = {1, 2, 3};
String[] output = new String[input.length * 2];
int i = 0;
for (int val : input) {
output[i++] = "id";
output[i++] = String.valueOf(val);
}
Run Code Online (Sandbox Code Playgroud)
但假设这可以在Java 8中用1-liner完成.
String[] result = Arrays.stream(input)
.mapToObj(x -> new String[] { "id", "" + x })
.flatMap(Arrays::stream)
.toArray(String[]::new);
Run Code Online (Sandbox Code Playgroud)
或者可能更冗长(但更糟糕的是,因为我们第一次加入,只是在之后立即拆分)
String[] result = Arrays.stream(input)
.mapToObj(x -> "id" + "," + x)
.collect(Collectors.joining(","))
.split(",");
Run Code Online (Sandbox Code Playgroud)
我可以想到这两个,但是对于你已经拥有的简单的for循环,它几乎不可读.