Java. Удаление данных из коллекции

Методы удаления из коллекций:


- remove(int index)


- boolean remove(Object o)


- boolean removeAll


- default boolean removeIf



Есть класс User:

public class User {
private String userName;
private int userAge;

public User(String userName, int userAge) {
this.userName = userName;
this.userAge = userAge;
}

public static List<User> getUsers() {
List<User> users = new ArrayList<>();
users.add(new User("Ivan", 34));
users.add(new User("Alex", 35));
users.add(new User("Max", 21));
users.add(new User("Tom", 45));
users.add(new User("Richard", 52));
users.add(new User("Donald", 19));
return users;
}

public String getUserName() {
return userName;
}

public void setUserName(String userName) {
this.userName = userName;
}

public int getUserAge() {
return userAge;
}

public void setUserAge(int userAge) {
this.userAge = userAge;
}

@Override
public String toString() {
return "User{" +
"userName='" + userName + '\'' +
", userAge=" + userAge +
'}';
}


@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
User user = (User) o;
return userAge == user.userAge &&
Objects.equals(userName, user.userName);
}

@Override
public int hashCode() {

return Objects.hash(userName, userAge);
}

}

Коллекция пользователей:

[User{userName='Ivan', userAge=34},

User{userName='Alex', userAge=35}, 

User{userName='Max', userAge=21}, 

User{userName='Tom', userAge=45}, 

User{userName='Richard', userAge=52}, 

User{userName='Donald', userAge=19}]


1.remove(int index)- удаление по индексу

List<User> users = User.getUsers();
users.remove(0);
Удалился пользователь Ivan 34 года:
[User{userName='Alex', userAge=35},
 User{userName='Max', userAge=21},
 User{userName='Tom', userAge=45},
 User{userName='Richard', userAge=52}, 
User{userName='Donald', userAge=19}]
Может бросить Exception IndexOutOfBoundsException
List<User> users = User.getUsers();
users.remove(10);

2.boolean remove(Object o) - удаление по объекту, 

исключений быть не может

List<User> users = User.getUsers();
//удалили пользователя Alex
users.remove(new User("Alex", 35));
//никого не удалили
users.remove(new User("Alex", 90));

3.boolean removeAll - удаление из одной коллекции,

всех элементов, которые есть

в другой коллекции


List<User> users = User.getUsers();
List<User> users2 = Arrays.asList(new User("Max", 21),
new User("New User", 45));
users.removeAll(users2);
Тут из коллекции users был удален пользователь Max 21, тк данный
пользователь был и в коллекциях users и users2

4.default boolean removeIf - сравнительно

новый метод, появился в Java 8,

для удаления данных по Предикату

В примере, удалить пользователей которые старше 40 лет:
List<User> users = User.getUsers();
users.removeIf(u -> u.getUserAge() >= 40);
Соответственно остались:
[User{userName='Ivan', userAge=34},
 User{userName='Alex', userAge=35}, 
User{userName='Max', userAge=21}, 
User{userName='Donald', userAge=19}]







Комментарии

Популярные сообщения из этого блога

Java. Лучшая практика работы с Enum

Java. Разбор класса Collections