1

私はオブジェクトのセットを持っています:

 NavigableSet<JobWithDepartTime> set = new TreeSet();

そして、他のクラスでこれを行うと:

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

それは例外があると言います(その2行目):

スレッド「メイン」での例外 java.util.NoSuchElementException

私がやりたいことは、このセットの最初の要素を取り出し、2 番目の要素を 1 番目にし、3 番目を 2 番目にするということです。それ、どうやったら出来るの?

どんな反応も高く評価されます。

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();

コードが行っていたのは、最初の要素を削除してから、新しい最初の要素に (削除せずに) アクセスしようとすることです。最初の要素が 1 つしかないセットの場合NoSuchElementException、最初の要素を削除するとセットが空になるため、結果は になります。

これらのメソッドの名前付けはやや混乱first()します。これは、伝統的にピークまたはポーリングと呼ばれるものを実行pollFirst()し、セットを変更するメソッドでもあります。

于 2014-10-07T14:40:07.263 に答える