Java中的优先队列spliterator()方法
Java中优先队列(PriorityQueue)的 spliterator() 方法返回与优先队列中相同的元素的 Spliterator 。返回的Spliterator是一个 惰性绑定和快速失败的 Spliterator。惰性绑定的Spliterator在首次遍历、首次分割或首次查询预估大小时,会绑定到元素的源(优先队列)上,而不是在Spliterator创建时就绑定到元素上。可以在Java 8中与Streams一起使用,也可以逐个或批量遍历元素。Spliterator更好的遍历元素的方式,因为它对元素提供了更多的控制。
语法:
public Spliterator<E> spliterator()
返回值: 返回一个Spliterator,它可以遍历优先队列中的元素。
下面的程序演示了优先队列的spliterator()方法:
示例1: 演示优先队列上的spliterator()方法。
// Java程序演示PriorityQueue
//的方法
import java.util.*;
public class GFG {
public static void main(String[] args)
{
//创建PriorityQueue
PriorityQueue<String> queue = new PriorityQueue<String>();
//向队列中添加String
queue.add("Kolkata");
queue.add("Patna");
queue.add("Delhi");
queue.add("Jammu");
//使用spliterator()方法
Spliterator<String> spt = queue.spliterator();
//从Spliterator中打印结果
System.out.println("字符串列表:");
//Spliterator的forEachRemaining方法
spt.forEachRemaining((n) -> System.out.println(n));
}
}
字符串列表:
Delhi
Jammu
Kolkata
Patna
示例2: 演示包含学生名字集的优先队列的spliterator()方法。
// Java程序演示PriorityQueue
//的方法
import java.util.*;
public class GFG {
public static void main(String[] args)
{
//创建至将包含名称列表的PriorityQueue
PriorityQueue<String> queue = new PriorityQueue<String>();
//将String对象添加到队列中
queue.add("Aman");
queue.add("Amar");
queue.add("Sanjeet");
queue.add("Josh");
queue.add("Ron");
queue.add("Kevin");
//使用spliterator()方法
Spliterator<String> spt = queue.spliterator();
//从Spliterator中打印结果
System.out.println("字符串对象列表:");
//Spliterator的forEachRemaining方法
spt.forEachRemaining((n) -> print(n));
}
public static void print(String s)
{
System.out.println("学生姓名:" + s);
}
}
字符串对象列表:
学生姓名:Aman
学生姓名:Amar
学生姓名:Kevin
学生姓名:Josh
学生姓名:Ron
学生姓名:Sanjeet
参考文献: https://docs.oracle.com/javase/8/docs/api/java/util/PriorityQueue.html#spliterator–
极客教程