java - 祖先列表作为流

标签 java java-8

如何在 Java 8 中将此 while 循环转换为流?

    Location toTest = originalLocation;
    while(true){
        toTest = toTest.getParentLocation();
        if (toTest==null) {
            break;
        }
        parents.add(toTest);
    }

假设 Location 沿着 :

@Data
public class Location{
    private String name;
    private Location parentLocation;
}

看起来应该是:

Stream.iterate(location, l -> l.getParentLocation()).collect(Collectors.toList());

但是这给了我一个 NullPointerException。我假设是 getParentLocation() 返回 null...

有人能帮忙吗?

最佳答案

JDK9解决方案:

Stream.iterate(location, Objects::nonNull, Location::getParentLocation)
      .collect(Collectors.toList());

关于java - 祖先列表作为流,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51621419/

相关文章:

java - 转储 java.util.Map 的内容 - 未按预期工作

java - 在ElasticSearch 7.4 java客户端中的geoShapeQuery中使用geojson多边形

java - 我可以结合按功能分组对流进行分区吗?

Lambda表达式java 8映射方法

java - 如何在 Android 中部署 Moquette 代理?

java - 如何发布使用 GSON 解析大型 json 文件的进度

java 8并行流按给定值组织列表

java - 通过分组、计数和过滤操作收集流

java - 如何将数据从第 5 个 Activity 发送到第一个 Activity ?

multithreading - 使用 Spliterator 将 ConcurrentLinkedQueue 分成两半