我有以下逻辑来删除系统中的非 Activity 用户,因为我们无法在迭代列表时删除行。有更好的方法来处理这个问题吗?
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();
关于java - 从列表中删除对象的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3767087/