为了账号安全,请及时绑定邮箱和手机立即绑定

如何在Java中连接两个列表中的单词

如何在Java中连接两个列表中的单词

森栏 2022-03-10 10:59:23
我想从两个不同列表中的单词创建一个句子。就像上面的例子:“list1w1 list2w1 list1w2 list2w2 list1w3 list2w3 ...”我知道如何使用 for 循环,但我想使用流。甚至可能吗?我目前的解决方案:StringBuilder result = new StringBuilder();for(int i=0; i<doses.size(); i++)result.append(String.format("%s %s<br>", list1.get(i), list2.get(i)));
查看完整描述

3 回答

?
万千封印

TA贡献1891条经验 获得超3个赞

使用IntStream

String res = IntStream.range(0, list1.size())
        .mapToObj(i -> String.format("%s %s", list1.get(i), list2.get(i)))
        .collect(Collectors.joining("<br>"));


查看完整回答
反对 回复 2022-03-10
?
MM们

TA贡献1886条经验 获得超2个赞

你可以这样做,

IntStream.range(0, list1.size())
    .mapToObj(i -> String.format("%s %s", list1.get(i), list2.get(i)))
    .collect(Collectors.joining("<br>"));

这是另一种方法。

IntStream.range(0, list1.size()).boxed()
    .collect(Collectors.mapping(i -> list1.get(i) + " " + list2.get(i), 
        Collectors.joining("<br>")));


查看完整回答
反对 回复 2022-03-10
?
慕慕森

TA贡献1856条经验 获得超17个赞

你可以用它zip来解决这个问题。


将 Streams 与Eclipse 集合 Collectors2.zip()一起使用:


List<String> one = Arrays.asList("list1w1", "list1w2", "list1w3");

List<String> two = Arrays.asList("list2w1", "list2w2", "list2w3");


String output = one.stream().collect(Collectors2.zip(two))

        .collect(pair -> pair.getOne() + ' ' + pair.getTwo())

        .makeString("<br>");

直接使用 Eclipse Collections API:


String output = LazyIterate.zip(one, two)

        .collect(pair -> pair.getOne() + ' ' + pair.getTwo())

        .makeString("<br>");

注意:我是 Eclipse Collections 的提交者。


查看完整回答
反对 回复 2022-03-10
  • 3 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信