我有一组对象:
NavigableSet<JobWithDepartTime> set = new TreeSet();
然后当我在另一堂课中这样做时:
GroupMesin.JobWithDepartTime a = groupMesin[i].set.pollFirst();
groupMesin[i].set.first().getJob().printData();
它说它有一个例外(在第二行):
线程“main”中的异常java.util.NoSuchElementException
我想要做的就是取出这个集合中的第一个元素,将第二个元素作为第一个元素,将第三个元素作为第二个元素,依此类推。 我该怎么做?
任何回应都会被贬低。
答案 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()
也是修改集合的方法。