如何将for循环转换为流

埃里克

我已经了解了一些有关流的知识,并且知道可以使用它们来代替循环。对于这个玩具示例,我正在使用一个图形数据库来存储一组字符串。dB将它们存储为顶点。我想检索这些顶点并将它们转换为字符串,而使用流。每个顶点都有一组属性。我给它一个键,它返回一个值。如果顶点具有我要寻找的属性,则将其添加到列表中。如果没有,我将存储顶点iD。

我有一个for循环,但不确定如何使用流。这是代码:

public List<String> getItems() throws Exception {
    Iterable<Vertex> myNodes = graph.getVertices();

    List<String> myItems = new ArrayList<>();

    // maybe there is a way to use stream API instead?
    for(Vertex v : myNodes)
    {
      String value = v.getId().toString();
      if(v.getPropertyKeys().contains(key))
      {
         value = v.getProperty(key);
      }

      myItems.add(value);
    }

    return myItems;
  }
飞行的

作为萨加尔Rohankar在他的回答中指出,你需要得到Spliterator您的Iterable那么您的任务就是简单的一线工作:

return StreamSupport.stream(graph.getVertices().spliterator(), false)
    .map(v -> v.getPropertyKeys().contains(key) ? v.getProperty(key) : v.getId().toString())
    .collect(Collectors.toList());

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章