【发布时间】:2017-08-15 13:31:04
【问题描述】:
我正在尝试找出使用 Java 8 流将简单的 int 数组(例如 {1, 2, 3})转换为字符串对的简单 String 数组(例如 {"id", "1", "id", "2", "id", "3"})的最优雅方法。
传统上,代码如下所示:-
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);
}
但假设这可以在 Java 8 的 1-liner 中完成。
【问题讨论】:
-
它不能在单行中完成(除非该行包含多个链式指令),而且 for 循环更快,更易于阅读和理解。我宁愿怀疑为什么你需要一个每个偶数元素都具有相同值的数组。它是多余的,因此是设计气味的标志。
-
对我来说,最合理的实现方式是:for (int i = 0, len = output.length; i output[i] = i % 2 == 0 ? "id" : String.valueOf(input[i / 2]));
标签: arrays java-8 java-stream