Есть некий класс 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::getName
User::getPhone
на функцию, которая будет вытаскивать номер телефона и трансформировать его в число, обрабатывая при этом ошибки конвертации и т.д. Очень желательно будт вынести это в отдельный методАйфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Подскажите, как можно заменить мою проверку, на такую, чтобы она выполнялась сразу при рандоме в первой строке, если это возможно:
Напишите строку вызова этой функции с такой строкой-паролем, чтобы возникло какое-нибудь исключение
Какой контейнерный класс можно использовать как ранилище строк таблицы, в которую часто вставляют в начало и в середину? Варианты: ArrayList LinkedList...
Использую в приложении два TextView, кнопку Button и ExoplayerПодскажите как правильно сделать сохранение состояния приложения при нажатии кнопки "Назад"...