我试图找出将简单的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);
}
但假设这可以在Java 8中用1-liner完成。
答案 0 :(得分:7)
String[] result = Arrays.stream(input)
.mapToObj(x -> new String[] { "id", "" + x })
.flatMap(Arrays::stream)
.toArray(String[]::new);
或者可能更冗长(但是因为我们第一次加入,更糟糕的是只是在之后立即拆分)
String[] result = Arrays.stream(input)
.mapToObj(x -> "id" + "," + x)
.collect(Collectors.joining(","))
.split(",");
我可以想到这两个,但是对于你已经拥有的简单的for循环,它几乎不可读。
答案 1 :(得分:2)
可以使它比Eugene's solution更难阅读:
String[] output = IntStream.range(0, input.length * 2)
.mapToObj(x -> x % 2 == 0 ? "id" : input[x / 2 ] + "")
.toArray(String[]::new);
答案 2 :(得分:0)
另一个变种可能是下一个:
func application(_ application: UIApplication, didFinishLaunchingWithOptions launchOptions: [UIApplicationLaunchOptionsKey: Any]?) -> Bool {
// Override point for customization after application launch.
IQKeyboardManager.sharedManager().enable = true // ADD THIS !!!
return true
}