如何删除第一个元素并使第二个元素立即成为java.util.NavigableSet中的第一个元素?

如何删除第一个元素并使第二个元素立即成为java.util.NavigableSet中的第一个元素?,java,treeset,nosuchelementexception,Java,Treeset,Nosuchelementexception,我有一组对象: NavigableSet<JobWithDepartTime> set = new TreeSet(); 它说它有一个例外(在第二行): 线程“main”java.util.NoSuchElementException中出现异常 我要做的就是取出这个集合中的第一个元素,使第二个元素成为第一个,第三个变成第二个,依此类推。 我该怎么做 任何响应都将被删除。pollFirst()实际上删除了元素,因此您要做的是: GroupMesin.JobWithDepartTim

我有一组对象:

 NavigableSet<JobWithDepartTime> set = new TreeSet();
它说它有一个例外(在第二行):

线程“main”java.util.NoSuchElementException中出现异常

我要做的就是取出这个集合中的第一个元素,使第二个元素成为第一个,第三个变成第二个,依此类推。 我该怎么做

任何响应都将被删除。

pollFirst()
实际上删除了元素,因此您要做的是:

GroupMesin.JobWithDepartTime a = groupMesin[i].set.pollFirst();
if (a != null) //if the set is empty, pollFirst() returns null
  a.getJob().printData();
代码所做的是删除第一个元素,然后尝试访问新的第一个元素(不删除它)。当您的集合只有一个元素开始时,这将导致
NoTouchElementException
,因为删除第一个元素后,集合将为空


这些方法的命名有点混乱,它是
first()
,做了你传统上可能称之为窥视或轮询的事情,而
pollFirst()
也是修改集合的方法。

哦,愚弄我,对不起,我的错。这种问题不应该在第一时间提出。我想知道为什么我从来没有想过。我应该删除这个吗?还是离开它?离开它,谁知道是否有人会无意中发现它并发现它有用?在我阅读此答案之前,我已经从NavigableSet迁移到PriorityQueue。而且效果很好:)
GroupMesin.JobWithDepartTime a = groupMesin[i].set.pollFirst();
if (a != null) //if the set is empty, pollFirst() returns null
  a.getJob().printData();