是否可以在Java中合并迭代器?

2022-08-31 20:46:16

是否可以在Java中合并迭代器?我有两个迭代器,我想合并/合并它们,以便我可以在一个过程中(在同一循环中)而不是两个步骤中迭代它们的元素。这可能吗?

请注意,两个列表中的元素数量可能不同,因此两个列表中的一个循环不是解决方案。

Iterator<User> pUsers = userService.getPrimaryUsersInGroup(group.getId());
Iterator<User> sUsers = userService.getSecondaryUsersInGroup(group.getId());

while(pUsers.hasNext()) {
  User user = pUsers.next();
  .....
}

while(sUsers.hasNext()) {
  User user = sUsers.next();
  .....
}

答案 1

Guava(前身为Google Collections)有Iterators.concat


答案 2

此外,Apache Commons Collection有几个用于操作迭代器的类,例如IteratorChain,它包装了许多迭代器。