1

我有一组对象:

 NavigableSet<JobWithDepartTime> set = new TreeSet();

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

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

它说它有一个异常(在第二行):

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

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

任何回应将不胜感激。

4

1 回答 1

2

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

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

您的代码所做的是删除第一个元素,然后尝试访问新的第一个元素(不删除它)。当您的集合只有一个元素开始时,这将导致 a NoSuchElementException,因为在删除第一个元素后,您的集合将为空。

这些方法的命名有些混乱,它first()执行您传统上可能称为 peeking 或 polling 的操作,并且pollFirst()也是修改集合的方法。

于 2014-10-07T14:40:07.263 回答