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

 В Java есть класс Collections, рассмотрим его основные методы:


- shuffle 
- fill
- reverse
- frequency
- min 
- max 
- addAll 
- replaceAll 

Для начала создадим класс обычный POJO класс User:

import java.util.ArrayList;
import java.util.List;

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 +
'}';
}
}

Метод getUsers возвращает коллекцию пользователей. Наша коллекция:
[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.shuffle - перемешать элементы в коллекции:

List<User> users = User.getUsers();
Collections.shuffle(users);
System.out.println(users);
Вывод:
[User{userName='Alex', userAge=35},
 User{userName='Richard', userAge=52},
 User{userName='Max', userAge=21}, 
 User{userName='Ivan', userAge=34},
 User{userName='Tom', userAge=45},
 User{userName='Donald', userAge=19}]

2.fill- заменить все элементы коллекции другим элементом

List<User> users = User.getUsers();
Collections.fill(users, new User("Fill", 60));
System.out.println(users);
Вывод:
[User{userName='Fill', userAge=60},
 User{userName='Fill', userAge=60},
 User{userName='Fill', userAge=60}, 
 User{userName='Fill', userAge=60}, 
 User{userName='Fill', userAge=60}, 
 User{userName='Fill', userAge=60}]

3.reverse- вывести коллекцию в обратном порядке:

List<User> users = User.getUsers();
Collections.reverse(users);
System.out.println(users);
Вывод:
[User{userName='Donald', userAge=19},
 User{userName='Richard', userAge=52},
 User{userName='Tom', userAge=45},
 User{userName='Max', userAge=21},
 User{userName='Alex', userAge=35}, 
User{userName='Ivan', userAge=34}]

4.frequency- частота, те сколько раз

встречается данный объект в коллекции
List<User> users = User.getUsers();
int i = Collections.frequency(users, new User("Richard", 52));
System.out.println(i); //1 - такой пользователь есть
i = Collections.frequency(users, new User("Richard", 5));
System.out.println(i); //0- такого пользователя нет
Важно !!! Должны быть переопределены методы equals и hashcode

5.min - получить минимальный объект, с помощью Comparator:

List<User> users = User.getUsers();
User minAgeUser = Collections.min(users,
Comparator.comparing(User::getUserAge));
System.out.println(minAgeUser);
Вывод:
User{userName='Donald', userAge=19}

6.max - получить максимальный объект, с помощью Comparator:

List<User> users = User.getUsers();
User maxUserAge = Collections.max(users,
Comparator.comparing(User::getUserAge));
System.out.println(maxUserAge);
Вывод:
User{userName='Richard', userAge=52}

7.addAll - добавить новые объекты в коллекцию

List<User> users = User.getUsers();

Collections.addAll(users, new User("Add all user", 36));
System.out.println(users);
Вывод:
[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},
User{userName='Add all user', userAge=36}]

8.replaceAll - булевский метод

для замены элемента в коллекции. true - замена произошла

List<User> users = User.getUsers();
User u1 = new User("Alex", 35);
User u2 = new User("Replace", 35);

boolean isReplaceUser = Collections.replaceAll(users, u1, u2);
System.out.println("isReplaceUser " + isReplaceUser); //true



Комментарии

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

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

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