繁体   English   中英

如果第二个数组中的值与第一个数组中的值相同,如何从另一个数组中删除一个值

[英]How to remove one arraylist value from another arraylist if the value in second array is same in first arraylist

样本输出:

2 bbb
5 eee
7 ggg

我的密码

public class User {

    private int id;
    private String name = "";

    public User(int id, String name) {
        this.id = id;
        this.name = name;
    }

    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

}

public class Main {

    public static void main(String[] args) {    
        List<User> users = new ArrayList<User>();
        users.add(new User(1, "aaa"));
        users.add(new User(2, "bbb"));
        users.add(new User(3, "ccc"));
        users.add(new User(4, "ddd"));
        users.add(new User(5, "eee"));
        users.add(new User(6, "fff"));
    users.add(new User(7, "ggg"));

        List<Integer> users1= new ArrayList<Integer>();
        removeUsers.add(3);
        removeUsers.add(6);
        removeUsers.add(1);
        removeUsers.add(4);


    }
}

如果users1 id 3和users id 3相等,那么我想删除用户中的值,并仅打印不匹配的值,如上所示。

for (User user : users1)
{
    if (users.contains(user))
    {
        users.remove(user);
    }
}

这是有效的,但是仅当您在User类中重写equals()方法时才有效。

@Override
public boolean equals(User user)
{
    return (id == user.getId());
}

这是一个非常简单的示例,它避免了ConcurrentModificationException

public class Users
{
  private User getUserById(List<User> users, int id)
  {
    for (User user : users)
    {
      if (user.getId() == id)
      {
        return user;
      }
    }
    return null;
  }

  public void removeUsers()
  {
    List<User> users = new ArrayList<User>();
    users.add(new User(1, "aaa"));
    users.add(new User(2, "bbb"));
    users.add(new User(3, "ccc"));
    users.add(new User(4, "ddd"));
    users.add(new User(5, "eee"));
    users.add(new User(6, "fff"));
    users.add(new User(7, "ggg"));

    List<Integer> removeUsers = new ArrayList<Integer>();
    removeUsers.add(3);
    removeUsers.add(6);
    removeUsers.add(1);
    removeUsers.add(4);


    for (Integer integer : removeUsers)
    {
      User userToRemove = getUserById(users,integer);
      if (userToRemove != null)
      {
        users.remove(userToRemove);
      }
    }

    for (User user : users)
    {
      System.out.println(user.getId() + " " + user.getName());
    }

  }

  public static void main(String[] args)
  {
    Users users = new Users();
    users.removeUsers();
  }

}
    for (Iterator<User> i = users.iterator(); i.hasNext(); ) {
        User user = i.next();
        if (users1.contains(user.getId()))
            i.remove();
    }

    for (User u : users)
        System.out.println(u.getId() + " " + u.getName());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM