Наш заказчик — казино «Риге-Тау» с планеты Диблублублу. Крайне заносчивые ребята, но платят хорошо. Они заказали нам сделать программу автоматической рассылки писем потенциальным клиентам. Не пугайтесь, джуниору (вам) поручена простая задача: создать словарь типа «фамилия»-«зарплата» и удалить из него тех, у кого зарплата ниже 500 кредитов.
Только для богачей
- 5
Недоступна
Комментарии (244)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
artbunny
11 мая, 20:40
Практики ради, запоминания для решил задачу четырьмя разными способами:
1. Через создание копии Map (создал копию; создал счетчик; циклом в копии сравнил значения с оригинальным списком и одновременно на условие <500; увеличил счетчик; в копии проверил, увеличился ли счетчик и удалил данные; вернул счетчик к 0). 8 строк, 1 новая переменная count, копия Map 👍
2. Через создание списка ArrayList (логика та же практически: создал список только по значениям из Map; ввел некую строку stringTemp со значением ""; в цикле по списку запустил цикл перебора пар ключ-значение Map, где по условию сравнил текущее значение из списка со значением из Map и на соответствие условию <500; при выполнении условия меняю stringTemp на значение текущего ключа и сразу же выхожу через break во внешний цикл, где по условию непустой строки удаляю данные из Map). 9 строк, 1 новая переменная stringTemp, список значений, break👎
3. Через создание списка Set (создал список Set; циклом перебрал пары Map, где при условии значений <500 в список Set добавлял ключи; через перебор добавленных значений в Set удалил данные из Map). 5 строк, переменная string вводимая в цикле for, список Set👍👍
4. Через итератор (Честно говоря, я еще не знаю устройство итератора внутри, но что-то мне подсказывает, что оно похоже на создание копии, чтобы перебор делать в одном месте, а удаление в другом. Тем не менее цикл while в итераторе позволяет сразу из проверить условие значений <500 и сразу же удалить данные по ключу). 4 строки, отсутствие новых переменных, итератор👍👍👍
Решения через removeif пока не рассматриваю, ибо не знаю, что за зверь такой.
0
Максим Белоусов
27 июня 2021, 17:26
Я как то привык через итератор решать.
Что быстрее итератор или создание копии мапы?
0
Van Rar
1 октября 2021, 05:06
после доп лекции про ArrayList и LinkedList, я понял что что бы на такие вопросы отвечать, лучше тестить)) хотя нарна это можно и загуглить исходя из того какая сложность у итератора и у копирования
0
Сергей
20 апреля 2021, 18:01
Всем привет, подскажите что не так? Не выполняется последнее условие.
0
Евгений
30 июля 2021, 19:22
remove (key) надо, удаляется по ключу. Так как ключи все разные.
Так же у тебя итерация идёт через map, соответственно при удалении, цикл сбивается.
Тебе нужно создать копию - через неё делать итерацию. А удалять из оригинальной map.
+1
Евгений
8 апреля 2021, 18:22
Обьясните дураку почему не работает?
0
Dim
10 апреля 2021, 18:30
насколько я понимаю, то в первом методе ты принимаешь в кач-ве аргументов мапу и еще стринг, который нигде не используется. Зачем?
тоже самое и во втором.
далее
как по мне, то бред, у нас ключи всегда уникальны. ты проверяешь ничто.
ну и тоже самое во втором методе.
его можно изменить и сравнивать Value новой мапы с Value начальной мапы и уже потом увеличивать счетчик, если есть совпадения. 0
Dim
28 марта 2021, 11:33
подскажите зачем нам создавать новый словарь и передавать в него значения старого?
почему мы не можем пользоваться старым словарем?
не могу понять
+2
Dim
28 марта 2021, 16:29
решил через итератор и подсказки) но все равно не понял почему нам надо 2й словарь, если решаем без итератора
0
ARCOS
9 апреля 2021, 16:49
насколько я понял, нельзя напрямую менять коллекцию при итерации, для этого надо создавать 2-й словарь.
0
Александр
25 марта 2021, 18:43
Взял логику решения из задачи про летние месяца, прошло)
+1
Игорь
2 марта 2021, 14:00
После предыдущих задач эта просто расслабуха!
+2
Mister Khokhma
25 февраля 2021, 14:24
Подскажите пожалуйста, почему в методе removeItemFromMap создается новый мап?
0
Alexander Mul
11 февраля 2021, 12:34
Изначально пришло в голову решить с помощью removeIf
ArrayList<Integer> copyMapValues = new ArrayList<>(map.values());
copyMapValues.removeIf(x -> x < 500);
Но потом передумал и просто решил с помощью метода удаления имен из задачи "Нам повторы не нужны" только переделал немного
0
Дмитрий
22 февраля 2021, 06:28
А можно ведь было просто получить коллекцию значений мапы и на неё использовать removeIf
+5
Alexander Mul
22 февраля 2021, 11:35
Блин я был так близко)) аха) спасибо дошло)))😀
0
Дмитрий
22 февраля 2021, 13:35
Как оно там на 12 ?=) Учитывая когда ты здесь был, то прошёл до туда довольно быстро...По сколько часов уделяешь джаварашу и читаешь что то ещё ?
0
Alexander Mul
22 февраля 2021, 18:48
Всё максимальное свободное время
Бывает там 2- 3 часа
по выходным вообще могу и по 6-8 сидеть потом перерыв и потом ещё часа 2 зарядить но это бывает редко, стараюсь в общем
Там дальше к стати легко будет ну особо пока что сложно
Шмидта посматриваю когда нужно использую его как справочник в основном из теории пока и тут хватает статей куча сдесь)
0
Дмитрий
23 февраля 2021, 04:39
Да, хороший напор. Хотелось чтоб и дальше такой же был =) На счёт книги посоветовали тут или ещё может где ?
0
Alexander Mul
23 февраля 2021, 15:43
Тут посоветовали
Просто в комментах увидел где-то только не Шмидт а Шильдт,
Java_Polnoe_rukovodstvo_-_Gerbert_Shildt_10-e_izdanie
0
Дмитрий
23 февраля 2021, 19:13
Спасибо большое =) Удачи в твоём прекрасном деле, ты комменты где нить по пути на уровнях оставляй, авось догоню =)
0
Alexander Mul
23 февраля 2021, 19:21
Ok) и тебе удачи)
0
Andrew
17 января 2021, 19:22
Задача решается элементарно путем незначительного изменения метода удаления имен из задачи "Нам повторы не нужны")
+2