Java 8 : mapping list inisde a list

标签 java collections set java-stream

我的A1类具有以下 2 个属性:

private String hour;
private List<A2> list;

A2类:

private String code;
private List<A3> list;

我想做的是用 java 8 找到一种更漂亮的方式来编写这个:

Set<MyObject> set = new HashSet<MyObject>();
for (A1 pes : a1.getList()) {
    for (A2 pe : a2.getList()) {
       MyObject bppc = new MyObject (a2.getCode(), a1.getHour());
       set.add(bppc);
    }
}

你有什么线索吗?
谢谢。

最佳答案

我发现你的版本已经很可读了,所以我不认为我会使用流重写它。然而,无论如何,这里有一个使用流的解决方案:

a1.getList()
  .stream()
  .flatMap(pes -> 
         a2.getList()
           .stream()
           .map(pe -> new MyObject(a2.getCode(), a1.getHour())))
  .collect(Collectors.toSet());

关于Java 8 : mapping list inisde a list,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39595149/

相关文章:

java - JPA:无状态 session Bean 和托管实体

java - MacOS 中的 Maven 和 Java 语言环境

mongodb - 在 MongoDB 中,如果删除了集合,索引也会自动删除吗?

java - 如何反转 Set<String> 中值的顺序

nhibernate - NHibernate 可以在没有迭代器的情况下保存集合吗?

java - 正确地将 JSON 数据发布到 Restful Web 服务 NetBeans

java - 邮件 api 中的 ssl 错误

python - 为什么在 Python 中使用字典表示图形?

c# - 测试两个 IEnumerable<T> 是否具有相同频率的相同值

java - 如何有效地检查字符串是否部分存在于更大的集合中?