私はこのタイプのコレクションを持っています:
List<com.liferay.portal.model.Role> ruoli
ruoli = currentUser.getRoles();
これには 3 つの要素が含まれており (デバッガーを使用して確認できます)、各Roleオブジェクトには名前フィールドがあり、前のリストの 3 つのオブジェクトには次の名前があります: Administrator、Power User、およびUser。
したがって、イテレータを使用してこのリストを反復処理し、 ruoliリストに含まれるこれら 3 つのオブジェクトの名前フィールドの値を出力しようとしているので、次のようにします。
Iterator<Role> iteratorUserRoles = ruoli.iterator();
while (iteratorUserRoles.hasNext()) {
System.out.println(iteratorUserRoles.next().getName());
iteratorUserRoles.next();
}
問題はそれが表示されないことです
しかし、私が得るスタックトレースで:
**Administrator**
**Power User**
**User**
期待どおりですが、次のメッセージが表示されます。
**Administrator**
**User**
そして、この例外をスローします:
2015-01-26 10:20:13,071 [[ACTIVE] ExecuteThread: '1' for queue: 'weblogic.kernel.Default (self-tuning)'] エラー commons.CommonsLogger.error(38) - アクション Java を実行できませんでした.util.NoSuchElementException
この操作を実行しようとすると、例外がスローされるようです。
iteratorUserRoles.next();
なんで?何が問題なのですか?私は何が欠けていますか?この問題を修正して、リスト内のすべてのオブジェクトを正しく反復処理するにはどうすればよいですか?
TNX