我有以下逻辑来删除系统中的非活动用户,因为我们在迭代列表时无法删除行。有更好的方法来处理这个问题吗?
List<User> users = new ArrayList<User>();
List<User> removeUsers = new ArrayList<User>();
for (User user : users) {
if (!user.isActive()) {
removeUsers.add(user);
}
}
users.removeAll(removeUsers);
如果您使用 ArrayList,最好的方法是 Jeff M 的变体。您也可以使用您的变体,但您应该考虑使用 Set(HashSet 或 IdentityHashSet)而不是 ArrayList 来删除用户。对于大量数据,它会有更好的性能。
但对于 LinkedList 最好的方法是使用 Iterator.remove 方法:
for (Iterator<User> it = users.iterator(); it.hasNext();)
if (it.next().isActive())
it.remove();
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)