java - 在 Java 8 中一行访问 List<List<Person>> 中的 Person 对象的每个名称

标签 java java-8

给定人员列表的列表,如何在一行代码中迭代所有名称而不使用java8中的forEach? 请参阅下面代码中评论中的问题。

import java.util.ArrayList;
import java.util.List;

public class Test {
    public static void main(String[] args) {
        List<ArrayList<Person>> llist = new ArrayList<ArrayList<Person>>();

        ArrayList<Person> list1 = new ArrayList<>();
        list1.add(new Person("aaa"));
        list1.add(new Person("bbb"));

        ArrayList<Person> list2 = new ArrayList<>();
        list2.add(new Person("ccc"));
        list2.add(new Person("ddd"));

        llist.add(list1);
        llist.add(list2);

        // how to change this part into one line in java 8?
        llist.forEach(l -> {
            l.forEach(p -> {
                System.out.println(p.getName());
            });
        });

    }

    static class Person {
        String name;

        Person(String name) {
            this.name = name;
        }

        public String getName() {
            return this.name;
        }

        public String toString() {
            return "" + this.name;
        }
    }
}

最佳答案

不使用 forEach 的“一行”代码:

llist.stream().flatMap(Collection::stream).peek(System.out::println).collect(Collectors.toList());

关于java - 在 Java 8 中一行访问 List<List<Person>> 中的 Person 对象的每个名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45703880/

相关文章:

java-8 - Comparator.nullsFirst 与空安全比较器

来自 JPA 的 Java Lambda 迭代列表

java - URL 扫描器断行

java - 将外部匿名类引用传递给内部匿名类中的方法

java - 当运行程序调用 '@Before' 方法时,Spring 不会 Autowiring 字段

java - 如何将 groupingBy 放入 Map 并更改键类型

java - 将列表中的列表提取为单个列表

java - Apache POI 在 tomcat 中崩溃但在 IDE 中不崩溃

java - 我可以使用java中的收集器从文档列表中查找具有最大键值的文档吗

java - 为什么我们必须使用双冒号来引用方法?