简单说明
Gremlin 中有一类特殊的操作,它能够终止遍历器的“遍历”行为,使其执行并返回结果。在这里要强调的一点:原生的 Gremlin 语句通常都是用遍历器连接起来的,但其实这些连接的过程并不会执行 Gremlin 语句,只有走到了terminalStep 时才会执行。这个模式类似于 Spark 中对RDD的map和action操作。
hasNext: 判断遍历器是否含有元素(结果),返回布尔值;
next: 不传参数时获取遍历器的下一个元素,也可以传入一个整数 n,则获取后面 n 个元素;
tryNext: hasNext和next的结合版,返回一个Optional对象,如果有结果还需要调用get()方法才能拿到;
toList: 将所有的元素放到一个List中返回;
toSet: 将所有的元素放到一个Set中返回,会去除重复元素;
toBulkSet: 将所有的元素放到一个能排序的List中返回,重复元素也会保留;
fill: 传入一个集合对象,将所有的元素放入该集合并返回,其实toList、toSet和toBulkSet就是通过fillStep实现的;
iterate: 这个 Step 在终止操作里面有点特殊,它并不完全符合终止操作的定义。它会在内部迭代完整个遍历器但是不返回结果。
为什么有些我们没有terminal的命令也输出结果了?这是 Tinkerpop 的 Gremlin 解析引擎对遍历器对象调用了一个IteratorUtils.asList()方法,又调用了它内部的fill()方法(注意:不是上面讲到的fill()Step)。
参考链接:https://blog.csdn.net/u010260089/article/details/82969173