猿问

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

我想从两个不同列表中的单词创建一个句子。就像上面的例子:


“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)));


森栏
浏览 115回答 3
3回答

万千封印

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

MM们

你可以这样做,IntStream.range(0,&nbsp;list1.size()) &nbsp;&nbsp;&nbsp;&nbsp;.mapToObj(i&nbsp;->&nbsp;String.format("%s&nbsp;%s",&nbsp;list1.get(i),&nbsp;list2.get(i))) &nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.joining("<br>"));这是另一种方法。IntStream.range(0,&nbsp;list1.size()).boxed() &nbsp;&nbsp;&nbsp;&nbsp;.collect(Collectors.mapping(i&nbsp;->&nbsp;list1.get(i)&nbsp;+&nbsp;"&nbsp;"&nbsp;+&nbsp;list2.get(i),&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;Collectors.joining("<br>")));

慕慕森

你可以用它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))&nbsp; &nbsp; &nbsp; &nbsp; .collect(pair -> pair.getOne() + ' ' + pair.getTwo())&nbsp; &nbsp; &nbsp; &nbsp; .makeString("<br>");直接使用 Eclipse Collections API:String output = LazyIterate.zip(one, two)&nbsp; &nbsp; &nbsp; &nbsp; .collect(pair -> pair.getOne() + ' ' + pair.getTwo())&nbsp; &nbsp; &nbsp; &nbsp; .makeString("<br>");注意:我是 Eclipse Collections 的提交者。
随时随地看视频慕课网APP

相关分类

Java
我要回答