我在一个字符串数组中有名字:
["foo", "bar", "baz"]
我想将其转换为:
["foo", "foo", "bar", "bar", "baz", "baz"]
我目前的解决方案:
String[] ns = new String[2 * names.length];
int i = 0;
for (String name : names)
{
ns[i++] = name;
ns[i++] = name;
}
有更清洁的解决方案吗?特别是,我认为重复的任务很难完成。
答案 0 :(得分:4)
假设您使用的是Java 8+,您可以将Stream
- flatMap
每个元素用于两个元素流,然后在转换回数组之前收集到List
。像,
String[] names = { "foo", "bar", "baz" };
String[] ns = Stream.of(names).flatMap(s -> Stream.of(s, s))
.collect(Collectors.toList()).toArray(new String[] {});
答案 1 :(得分:2)
有点清洁,或许:
String[] ns = new String[2 * names.length];
for (int i = 0; i < ns.length; i++)
ns[i] = names[i / 2];