【发布时间】:2015-03-24 16:56:03
【问题描述】:
我有一个这种类型的集合:
List<com.liferay.portal.model.Role> ruoli
ruoli = currentUser.getRoles();
包含 3 个元素(我使用调试器看到它),每个 Role 对象都有一个 name 字段,并且 previos 列表中的 3 个对象具有以下名称: 管理员、高级用户和用户。
所以我尝试使用 iterator 来迭代这个列表并将这 3 个对象的名称字段的值打印到 ruoli 列表中,所以我这样做:
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
【问题讨论】:
标签: java list iterator java-collections-api