2014-10-07 288 views
1

我有一組對象:如何刪除第一個元素並使第二個元素成爲java.util.NavigableSet中的第一個元素?

NavigableSet<JobWithDepartTime> set = new TreeSet(); 

,然後當我這樣做是其他類:

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

它說,它有一個例外(對第二行):

線程 「main」 java.util.NoSuchElementException異常

我想要做的就是取出這個集合中的第一個元素,使第二個元素成爲第一個元素,第三個元素成爲第二個元素,等等。 我該怎麼做?

任何迴應都將被認可。

回答

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()也是修改該方法的方法。

+0

哦,騙我,對不起,我的壞。 這種問題不應該在第一時間提出。 我想知道爲什麼它永遠不會跨越我的想法。 我應該刪除它嗎?或離開它? – 2014-10-07 18:40:44

+0

離開它,誰知道是否有人會偶然發現它並發現它有用? – biziclop 2014-10-07 18:45:41

+0

無論如何我讀這個答案之前, 我已經將表格NavigableSet遷移到PriorityQueue。 它只是正常工作:) – 2014-10-07 18:46:50

相關問題