我有一个包含 2 个对象的数组列表:
List<Object[2]>
其中 object[0] 是一个整数,object[1] 是一个字符串。
如何流式传输列表并对每个对象应用不同的函数? 因此,结果将是一个数组:
result[0] = multiplication of all object[0]
result[1] = concatenation of all object[1]
最佳答案
您可以使用 reduce()
实现此目的:
public void testStacko() {
List<Object[]> list = new ArrayList<>();
list.add(new Object[] {1, "foo"});
list.add(new Object[] {6, "|bar"});
list.add(new Object[] {15, "|baz"});
Object[] array = list.stream()
.reduce(
(obj1, obj2) ->
new Object[] {(int) obj1[0] * (int) obj2[0],
(String) obj1[1] + (String) obj2[1]
}
)
.get();
System.out.println(array[0]); // 90
System.out.println(array[1]); // foo|bar|baz
}
关于对象数组的Java Stream Reduce,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56650791/