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

时间:2014-10-07 14:13:00

标签: java treeset nosuchelementexception

我有一组对象:

 NavigableSet<JobWithDepartTime> set = new TreeSet();

然后当我在另一堂课中这样做时:

GroupMesin.JobWithDepartTime a = groupMesin[i].set.pollFirst();
groupMesin[i].set.first().getJob().printData();

它说它有一个例外(在第二行):

  

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

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

任何回应都会被贬低。

1 个答案:

答案 0 :(得分:2)

pollFirst()实际上删除了元素,所以你想要做的是:

GroupMesin.JobWithDepartTime a = groupMesin[i].set.pollFirst();
if (a != null) //if the set is empty, pollFirst() returns null
  a.getJob().printData();

您的代码正在执行的操作是删除第一个元素,然后尝试访问新的第一个元素(不删除它)。当你的集合只有一个元素开头时,这将产生NoSuchElementException,因为删除第一个元素后,你的集合将为空。

这些方法的命名有些令人困惑,first()执行传统上可能称为偷看或轮询的内容,pollFirst()也是修改集合的方法。