java - 从列表中删除对象的最佳方法是什么

标签 java

我有以下逻辑来删除系统中的非 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/

相关文章:

java - 调用链函数会产生开销吗?

java - 一对多的 Hibernate 持久性很慢

java - 如何在 Windows 中检测文件重命名/move

java - 我可以在 AnyLogic 拆分组件中将单个代理拆分为多个代理吗?

java - java中的静态方法加载/卸载和内存区域?

java - 为什么我的对账单没有发送到客户端?

java - DigitalOcean Tomcat 设置

使用消息队列的 Java C 集成

java - 获取一天的总小时数

java - 如何设置 SUDO_ASKPASS 环境变量?