我在字符串数组中有名称:

["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;
}


有没有更清洁的解决方案?特别是,我认为重复的分配工作做得不好。

最佳答案

假设您使用的是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[] {});

关于java - 转换数组以包含每个项目的重复项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43806799/

10-11 21:56
查看更多