对象数组的Java Stream Reduce

标签 java java-8 java-stream reduce

我有一个包含 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/

相关文章:

java - Android在Java中超时重复任务

java - Android 何时支持默认方法(Java 8)?

java - 从 Java 8 中的方法返回 List<Integer>?

java - 将 for-each 循环替换为 lambda 表达式

java - 核心计数任务 CompletableFuture 比 parallelStream 慢

java - 在 Java 8 中使用单个函数替换多个字符串

java - 无法使用eclipse创建android应用程序

java - 有什么方法可以从本地计算机(本地服务器)读取数据库文件并将其复制到android中的 Assets 文件夹中?

java - 如何将对象转换为 JSON 表示形式

java - 为什么 Files.lines(和类似的 Streams)不会自动关闭?