[英]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.