我想从两个不同列表中的单词创建一个句子。就像上面的例子:“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>"));
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>")));
慕慕森
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 的提交者。
添加回答
举报
0/150
提交
取消