java - 如何使用 Java 8 方法对 List<List<>> 结构中的每个元素应用一些更改

标签 java list foreach java-8 java-stream

我有一些类似 List<List<Double>> listOfDoubles 的结构我需要将其转换为 List<List<Integer>> listOfInteger .我在没有使用 Java 8 的情况下编写了代码。它看起来像:

List<List<Integer>> integerList = new ArrayList<>();
for (int i = 0; i < doubleList.size(); i++) {
    for (Double doubleValue : doubleList.get(i)) {
        integerList.get(i).add(doubleValue.intValue());
    }
}

我试图替换第二个 for通过 foreach但不能因为i应该是最终的。如何使用 Java 8 方法编写此代码?

最佳答案

您可以流式传输“外部”列表,生成 Stream<List<Double> .然后,流式传输每个“内部”列表,将每个元素转换为 Integer并收集结果。然后只收集“外部”流。如果你把它们放在一起,你会得到这样的东西:

List<List<Integer>> integerList = 
    doubleList.stream()
              .map(l -> l.stream()
                         .map(Double::intValue)
                         .collect(Collectors.toList()))
              .collect(Collectors.toList());

关于java - 如何使用 Java 8 方法对 List<List<>> 结构中的每个元素应用一些更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44317087/

相关文章:

java - 线程 volatile

java - "No Persistence provider for EntityManager"错误

java - 如何在 ServerName 和 Url 中使用 DNS 设置 Glassfish 连接池

java - 优先禁用声音无法正常工作

java - 如何列出所有大于给定参数的文件?

c# - 使用C#将数据写入DataTable中的DataRow

C++ for_each 算法和字符串

list - 根据长度过滤子集?

c++ - 推进列表迭代器

php - 如何在 php 数组中的每个对象中添加一个新的键值对?