Java 8 如何操作一个列表中的对象并将它们收集到另一个列表中?

标签 java lambda foreach java-8 java-stream

我对 Java8 还很陌生。我需要将 POJO 列表转换为按特定条件分组并在 UI 上显示。

  • 将属于“ child ”类别的对象列表转换为“人员” 类别。
  • 返回列表。

    Children.java
    private String firstName;
    private String lastName;
    private String school;
    private String personId;
    // Setters and getters.
    
    Person.java
    private String fullName;
    private String address;
    // Setters and Getters.
    
    private Person convertChildToPerson(Children child) {
             Person person = new Person();
             person.setFullName(child.getLastName() + ", " + child.getFirstName());
              ..
              return person;
     } 
    

    .. 主要代码.. ..

    List<Person> personList;  // Is populated by other functions.
    
    // Connect to DB and gets the output
    List<Children> childrenList = (Children) criteria.list();  
    
    for(Children children: childrenList) {
         personList.add(convertChildToPerson(children));
    }
    return personList; 
    

    上面的FOR-LOOP不能用Java 8 Streams代替吗?

最佳答案

 List<Person> newList = childrenList.stream()
             .map(this::convertChildToPerson)
             .collect(Collectors.toList());

 personList.addAll(newList);

按照霍尔格的建议,更短(更好):

childrenList.stream()
            .map(this::convertChildToPerson)
            .forEachOrdered(personList::add);

关于Java 8 如何操作一个列表中的对象并将它们收集到另一个列表中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49016072/

相关文章:

java - 如何使屏幕上的 netbeans 预览匹配运行时

java - 如何用java读取command.com的输出

java - 如何使用 java lambda 表达式通过迭代两个不同类型的列表来创建列表?

r - R 中 foreach() 内的 try() 问题

php - 在多维数组中搜索任何键中的部分值

ant - 如何将 Ant foreach 迭代与文件中的值一起使用?

java - 将 GLSurfaceView 类与 android xml 布局一起使用

java - 2D 游戏方 block 放置算法

lambda - 在函数调用中作为参数传递时,粗箭头语法的含义是什么?

Python (2.7) - 考虑多个字段的简单 IF THEN 逻辑