当前位置:  开发笔记 > 编程语言 > 正文

流分组:子列表到唯一的父列表

如何解决《流分组:子列表到唯一的父列表》经验,为你挑选了1个好方法。

我正在寻找一种简洁有效的方法来从使用Java 8流的子项列表中获取唯一父项列表.

对于示例,我有两个简单的类:

public class Child{
  private Parent parent;
  public Child(Parent parent){
    this.parent = parent;
  }
  public Parent getParent(){
    return this.parent;
  }
}

public class Parent{
  private List children;
  public Parent(){
    this.children = new ArrayList();
  }
  public void addChild(Child child){
    this.children.add(child);
  }
}

首先,我从某种方法获得Child对象的列表.
孩子可能属于多个父母,可能有父母碰撞.

List children = getChildren();

然后 :

List uniqueParents = children
  .stream()
  .collect(Collectors.groupingBy(Child::getParent))
  .keySet()
  .stream()
  .collect(Collectors.toList());

所以它有效,但我想避免双流并收集.

这可能直接在一个流中吗?



1> Thomas Kläge..:

这个怎么样:

List uniqueParents = children
    .stream()
    .map(Child::getParent)
    .distinct()
    .collect(Collectors.toList());

推荐阅读
乐韵答题
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有