Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.63/8: Рейтинг темы: голосов - 8, средняя оценка - 4.63
9 / 9 / 3
Регистрация: 20.04.2016
Сообщений: 33
1

Работа с Map Java 8

17.04.2017, 19:20. Показов 1679. Ответов 7

Author24 — интернет-сервис помощи студентам
Кто-нибудь может подсказать как объединить, чтобы не требовалось создавать лист с ключами отдельно и потом пробегать через него, а сразу удалять ключ, когда лист становиться пустой?

Java
1
2
3
4
5
6
7
8
9
10
11
12
Map<Boolean, List<Car>> carsByPicked = new HashMap<>();
 
Map<String, List<Car>> carsByBrand = new HashMap<>();
 
List<Car> carsToRemove = carsByPicked.get(true);
 
List<String> brands = new ArrayList<String>(carsByBrand.keySet());
 
keys.forEach(brand -> carsByBrand.computeIfPresent(brand,(brands, cars) -> 
cars.removeIf(car -> carsToRemove.contains(car) || cars.size() == 0) ? null : cars)); 
 
carsByBrand.replaceAll((brand, cars) -> {cars.removeAll(carsToRemove); return cars;});
К примеру есть 2 Map's.
1.Первая где ключ это выбрана машина или нет и значение в виде листа с машинами соответствующие указанному ключу.
3.Вторая где ключ это марка машины и значение в виде листа с машинами соответствующие указанному ключу.
5.Берётся лист с машинами которые нужно удалить из этих Map's.
7.Берётся лист с марками машин.
9.С помощью forEach-loop'a каждое название марки используется в методе computeIfPresent, чтобы удалить машину из листа и если машина оказывается последней в этом листе, то удаляется и ключ для этого значения.
12.Я пробывал добиться такого же результата с помощью replaceAll метода, но только получилось удалить машины из листа.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
17.04.2017, 19:20
Ответы с готовыми решениями:

Работа с Map в java
Ребят, подскажите, пожалуйста.. У меня есть класс NotebookTxtMappedDb, в котором происходит работа...

Map интерфейс в Java
1. Учет товаров на складе Основной информационный объект: товар (код товара (уникален), название,...

Java. Интерфейс Map
Добрый вечер! Есть готовый класс Device, необходимо выполнить сортировку по названию фирмы, с...

Map коллекции JAVA
Доброго времени суток) суть задания - есть класс Goods(в нем есть название товара, тип, цена за...

7
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
17.04.2017, 21:40 2
Цитата Сообщение от Ivan_FX Посмотреть сообщение
К примеру есть 2 Map's.
1.Первая где ключ это выбрана машина или нет и значение в виде листа с машинами соответствующие указанному ключу.
3.Вторая где ключ это марка машины и значение в виде листа с машинами соответствующие указанному ключу.
5.Берётся лист с машинами которые нужно удалить из этих Map's.
7.Берётся лист с марками машин.
9.С помощью forEach-loop'a каждое название марки используется в методе computeIfPresent, чтобы удалить машину из листа и если машина оказывается последней в этом листе, то удаляется и ключ для этого значения.
12.Я пробывал добиться такого же результата с помощью replaceAll метода, но только получилось удалить машины из листа.
Ты лучше вместо капитанских комментариев к коду, опиши, что ты хочешь получить в итоге. У машины уникальный идентификатор есть?
0
9 / 9 / 3
Регистрация: 20.04.2016
Сообщений: 33
17.04.2017, 21:52  [ТС] 3
Цитата Сообщение от korvin_ Посмотреть сообщение
Ты лучше вместо капитанских комментариев к коду, опиши, что ты хочешь получить в итоге. У машины уникальный идентификатор есть?
Я просто хочу обновить Map'у и чтобы у неё удалялся ключ если лист для этого ключа пустой
0
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
17.04.2017, 22:55 4
Цитата Сообщение от Ivan_FX Посмотреть сообщение
Я просто хочу обновить Map'у и чтобы у неё удалялся ключ если лист для этого ключа пустой
Вариант первый — создать новый map:
Java
1
2
3
        final Map<Key, List<Value>> filtered = map.entrySet().stream()
                .filter(entry -> !entry.getValue().isEmpty())
                .collect(Collectors.toMap(entry -> entry.getKey(), entry -> entry.getValue()));
Вариант второй — изменить существующий:
Java
1
        map.entrySet().removeIf(entry -> entry.getValue().isEmpty());
0
9 / 9 / 3
Регистрация: 20.04.2016
Сообщений: 33
17.04.2017, 23:33  [ТС] 5
Цитата Сообщение от korvin_ Посмотреть сообщение
Вариант второй — изменить существующий:
то есть не получиться объединить в одну линию?

к примеру
Java
1
map.replaceAll((key, val) -> getUpdatedListFor(key)); // где getUpdatedListFor BiFunction
0
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
17.04.2017, 23:57 6
Цитата Сообщение от Ivan_FX Посмотреть сообщение
то есть не получиться объединить в одну линию?
В какую ещё одну линию? Что объединить?

Цитата Сообщение от Ivan_FX Посмотреть сообщение
к примеру
Что ты этим примером сказать хотел? Что делает getUpdatedListFor? И это точно не BiFunction.
0
9 / 9 / 3
Регистрация: 20.04.2016
Сообщений: 33
18.04.2017, 00:10  [ТС] 7
Цитата Сообщение от korvin_ Посмотреть сообщение
Что ты этим примером сказать хотел? Что делает getUpdatedListFor? И это точно не BiFunction.
т.е Function
0
Эксперт функциональных языков программированияЭксперт Java
4486 / 2721 / 485
Регистрация: 28.04.2012
Сообщений: 8,590
18.04.2017, 06:25 8
Цитата Сообщение от Ivan_FX Посмотреть сообщение
т.е Function
И? Это ни о чём не говорит.
0
18.04.2017, 06:25
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
18.04.2017, 06:25
Помогаю со студенческими работами здесь

Ошибка java.lang.ClassCastException: com.organizer.ToDoItemDescr cannot be cast to java.util.Map
Ошибка появляется когда пытаюсь вытянуть из кастомного адаптера запись ListView. Весь лог ошибки...

Работа с map()
Всем добрый день! У меня есть вот такой список : q = Мне нужно получить такой: q = ...

Работа с map
Нужно записать в map указатели на объекты производных классов. Пробую сделать так std::map &lt;int,...

работа с map
Суть задания в том, чтобы создать словарь. И мне файл дан, в котором есть пример содержимого: &quot;...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru