Java 具有多个值的流foreach?
我有一个包含偶数元素的Java 具有多个值的流foreach?,java,foreach,java-stream,Java,Foreach,Java Stream,我有一个包含偶数元素的ArrayList。如何使用Stream.forEach一次解析2个值 x.forEach((a, b) -> System.out.println(a.toString() + "-" + b.toString()); 这不起作用。这会起作用: IntStream.range(0, list.size() - 1) .filter(i -> i % 2 == 0) .forEach(i -> System.out.println(list.get(i)
ArrayList
。如何使用Stream.forEach
一次解析2个值
x.forEach((a, b) -> System.out.println(a.toString() + "-" + b.toString());
这不起作用。这会起作用:
IntStream.range(0, list.size() - 1)
.filter(i -> i % 2 == 0)
.forEach(i -> System.out.println(list.get(i) + "-" + list.get(i + 1)));
它将从列表[1,2,3,4,5,6]生成以下输出:
1-2
3-4
5-6
这将实现以下目的:
IntStream.range(0, list.size() - 1)
.filter(i -> i % 2 == 0)
.forEach(i -> System.out.println(list.get(i) + "-" + list.get(i + 1)));
它将从列表[1,2,3,4,5,6]生成以下输出:
1-2
3-4
5-6
您可以将以下帮助器方法添加到项目的某些实用程序类中:
public static <T> void forPairs(List<T> list, BiConsumer<T, T> action) {
IntStream.range(0, list.size()/2)
.forEach(i -> action.accept(list.get(i*2), list.get(i*2+1)));
}
publicstaticvoidforpairs(列表、双消费者操作){
IntStream.range(0,list.size()/2)
.forEach(i->action.accept(list.get(i*2),list.get(i*2+1));
}
然后像这样使用它:
List<Integer> list = Arrays.asList(1, 3, 5, 2, 1, 6);
forPairs(list, (a, b) -> System.out.println(a + "-" + b));
List List=Arrays.asList(1,3,5,2,1,6);
forPairs(list,(a,b)->System.out.println(a+“-”+b));
您可以将以下帮助器方法添加到项目的某些实用程序类中:
public static <T> void forPairs(List<T> list, BiConsumer<T, T> action) {
IntStream.range(0, list.size()/2)
.forEach(i -> action.accept(list.get(i*2), list.get(i*2+1)));
}
publicstaticvoidforpairs(列表、双消费者操作){
IntStream.range(0,list.size()/2)
.forEach(i->action.accept(list.get(i*2),list.get(i*2+1));
}
然后像这样使用它:
List<Integer> list = Arrays.asList(1, 3, 5, 2, 1, 6);
forPairs(list, (a, b) -> System.out.println(a + "-" + b));
List List=Arrays.asList(1,3,5,2,1,6);
forPairs(list,(a,b)->System.out.println(a+“-”+b));
如果为了使用流而使用流,您可以:
Iterator<Integer> iterator = Arrays.asList(1, 2, 3, 4, 5, 6).iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next().toString() + "-" + iterator.next().toString());
}
Iterator Iterator=Arrays.asList(1,2,3,4,5,6).Iterator();
while(iterator.hasNext()){
System.out.println(iterator.next().toString()+“-”+iterator.next().toString());
}
注意:如果列表大小为奇数,则会抛出
NoSuchElementException
。如果需要,可以轻松编写防御检查。如果为了使用流而使用流,可以:
Iterator<Integer> iterator = Arrays.asList(1, 2, 3, 4, 5, 6).iterator();
while(iterator.hasNext()) {
System.out.println(iterator.next().toString() + "-" + iterator.next().toString());
}
Iterator Iterator=Arrays.asList(1,2,3,4,5,6).Iterator();
while(iterator.hasNext()){
System.out.println(iterator.next().toString()+“-”+iterator.next().toString());
}
注意:如果列表大小为奇数,则会抛出
NoSuchElementException
。如果需要,可以很容易地编写防御检查。整数值,如:1、2、3、4、5、6。你看了吗?@BorisvanKatwijk,这个问题是无关的:使用了重叠对。在这里,我假设OP想要使用非重叠对。整数值,比如:1,2,3,4,5,6你看了吗?@BorisvanKatwijk,这个问题是无关的:使用了重叠对。这里,我假设OP想要使用非重叠对。