首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >转换数组以包含每一项的重复

转换数组以包含每一项的重复
EN

Stack Overflow用户
提问于 2017-05-05 13:52:44
回答 2查看 44关注 0票数 1

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

代码语言:javascript
复制
["foo", "bar", "baz"]

我想把它改造成:

代码语言:javascript
复制
["foo", "foo", "bar", "bar", "baz", "baz"]

我目前的解决方案:

代码语言:javascript
复制
String[] ns = new String[2 * names.length];
int i = 0;
for (String name : names)
{
    ns[i++] = name;
    ns[i++] = name;
}

有更清洁的解决方案吗?特别是,我认为重复的任务做得不好。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-05-05 13:57:29

假设您使用的是Java 8+,您可以使用一个Stream - flatMap每个元素流到一个两个元素流,然后收集到一个List,然后再转换回一个数组。喜欢,

代码语言:javascript
复制
String[] names = { "foo", "bar", "baz" };
String[] ns = Stream.of(names).flatMap(s -> Stream.of(s, s))
        .collect(Collectors.toList()).toArray(new String[] {});
票数 4
EN

Stack Overflow用户

发布于 2017-05-05 14:00:49

稍微干净一点,也许:

代码语言:javascript
复制
String[] ns = new String[2 * names.length];
for (int i = 0; i < ns.length; i++)
    ns[i] = names[i / 2];
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43806799

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档