当前位置: 首页 > 知识库问答 >
问题:

Java 8如何操作一个列表中的对象并将其收集到另一个列表中?[副本]

曾晨
2023-03-14

我对Java8相当陌生。我需要将POJO列表按一定标准转换为group,并在UI上显示。

>

  • 将属于儿童类别的对象列表转换为人员类别。
  • 返回列表。

    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不能被Java8 Streams替换吗?

  • 共有1个答案

    夏骏
    2023-03-14
     List<Person> newList = childrenList.stream()
                 .map(this::convertChildToPerson)
                 .collect(Collectors.toList());
    
     personList.addAll(newList);
    

    甚至更短(更好),正如霍尔格所说:

    childrenList.stream()
                .map(this::convertChildToPerson)
                .forEachOrdered(personList::add);
    
     类似资料:
    • 如何使用将多个值收集到一个列表中? 因为我对接口有完全的控制权:还是应该更改方法以返回数组而不是列表?

    • 很抱歉这太模糊了,但代码太多了。 这是一个五卡梭哈游戏。基本上,我试图将对象添加到另一个数组列表中的数组列表中。 这是我创建玩家数组并将手类中的数组添加到其中的地方,至少我认为这就是正在发生的事情: 稍后,我尝试在循环交易中将牌添加到玩家阵列中的手牌阵列中。由于有五张牌,第一个循环进行了五次。第二个是玩家数组的长度(玩家总数),每次应该添加一张卡。 Deck类中有一个deal方法,由以下方法初始化

    • 问题内容: [‘a’,’a’,’b’,’c’,’c’,’c’] 至 和 问题答案: x=[‘a’,’a’,’b’,’c’,’c’,’c’] >>> map(x.count,x) [2, 2, 1, 3, 3, 3] >>> dict(zip(x,map(x.count,x))) {‘a’: 2, ‘c’: 3, ‘b’: 1} >>>

    • 我在从一个表中插入一个列的值作为另一个表中的列时遇到了麻烦。我在col1中有一些值的表A:和另一个列等于col1值的表B。 我想把表A,col1中的其余值添加为表B中的列。请帮助我解决我的问题。我正在使用SQL server 2012。

    • 例如,我有一个类包含name和surname字段。 我想从的中收集一个的(名字和姓氏都在一起),但似乎无法对每个列表使用两次map或无法对每个列表使用两次stream。 我做错了什么?