Есть некий класс User. Как я могу его преобразовать в справочник, по принципу[номер телефона -> пользователь]. Знаю, что надо использовать Map, но не понимаю, что именно указывать в <>. Думал, может использовать stream.
P.S. на вход получаю коллекцию пользователей.
public static class User {
private String name;
private int age;
private String phone;
public User(String name, int age) {
this.name = name;
this.age = age;
}
public User(String phone) {
this.phone = phone;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getPhone() {
return phone;
}
public void setPhone(String phone) {
this.phone = phone;
}
}
Моя реализация, но она выдает ошибку // Can not resolve method toMap()
public static int task2(Collection<User> source) {
Collection<User> users = new ArrayList<>(source);
Map<Integer, String> map = users.stream().collect(Collectors.toMap());
return null;
}
Если я вас правильно понял, то вот:
Map<String, User> map = new HashMap<>();
users.forEach(user -> map.put(user.getPhone(), user));
stream вполне можно использовать, но коллектору нужно указать, что брать в качестве ключа и значения. Сделать это можно передав соответствующие функции в toMap, например так:
Map<String, User> map = users.stream().collect(
Collectors.toMap(User::getPhone, user -> user)
);
user -> user можно заменить на Function.identity()
В Вашей реализации Map был параметризован целым числом и строкой (Map<Integer, String>)...
Если это означает что Вы хотите получить справочник [номер телефона в числовом формате] -> [имя пользователя], то нужно будет поменять аргументы в toMap:
user -> user на User::getNameUser::getPhone на функцию, которая будет вытаскивать номер телефона и трансформировать его в число, обрабатывая при этом ошибки конвертации и т.д. Очень желательно будт вынести это в отдельный методОсновные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости