Только для богачей

  • 5
  • Недоступна
Наш заказчик — казино «Риге-Тау» с планеты Диблублублу. Крайне заносчивые ребята, но платят хорошо. Они заказали нам сделать программу автоматической рассылки писем потенциальным клиентам. Не пугайтесь, джуниору (вам) поручена простая задача: создать словарь типа «фамилия»-«зарплата» и удалить из него тех, у кого зарплата ниже 500 кредитов.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (251)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Максим Белоусов
Уровень 18, Москва, Россия
27 июня 2021, 17:26
Я как то привык через итератор решать. Что быстрее итератор или создание копии мапы?
Van Rar
Уровень 18, Zelenograd
1 октября 2021, 05:06
после доп лекции про ArrayList и LinkedList, я понял что что бы на такие вопросы отвечать, лучше тестить)) хотя нарна это можно и загуглить исходя из того какая сложность у итератора и у копирования
Сергей
Уровень 9, Москва, Россия
20 апреля 2021, 18:01
Всем привет, подскажите что не так? Не выполняется последнее условие.
package com.javarush.task.task08.task0818;

import java.util.HashMap;
import java.util.Map;

/*
Только для богачей
*/

public class Solution {
    public static Map<String, Integer> createMap() {
        Map<String, Integer> map = new HashMap();

        map.put("Иванов1", 150);
        map.put("Иванов2", 750);
        map.put("Иванов3", 800);
        map.put("Иванов4", 200);
        map.put("Иванов5", 100);
        map.put("Иванов6", 340);
        map.put("Иванов7", 500);
        map.put("Иванов8", 490);
        map.put("Иванов9", 499);
        map.put("Иванов10", 580);
        return map;//напишите тут ваш код
    }

    public static void removeItemFromMap(Map<String, Integer> map) {
        for (Map.Entry<String, Integer> entry : map.entrySet())
        {
            String key = entry.getKey();
            int value = entry.getValue();

            if (value < 500)
            {
                map.remove(key, value);
            }
        }//напишите тут ваш код
    }

    public static void main(String[] args) {

    }
}
Евгений
Уровень 20, Великобритания
30 июля 2021, 19:22
remove (key) надо, удаляется по ключу. Так как ключи все разные. Так же у тебя итерация идёт через map, соответственно при удалении, цикл сбивается. Тебе нужно создать копию - через неё делать итерацию. А удалять из оригинальной map.
Евгений
Уровень 9
8 апреля 2021, 18:22
Обьясните дураку почему не работает?
public static int getCountTheSameFirstName(Map<String, String> map, String name){
       Map<String, String> copyFirstName = new HashMap<>(map);
       int count = 0;
       for (Map.Entry<String, String> pair : copyFirstName.entrySet()){
           if (pair.getKey() == pair.getKey()){
               count++;
           }
       }
       return count;
   }

   public static int getCountTheSameLastName(Map<String, String> map, String lastName){
       Map<String, String> copyLastName = new HashMap<>(map);
       int count = 0;
       for (Map.Entry<String, String> pair1 : copyLastName.entrySet()){
           if (pair1.getValue() == pair1.getValue()){
               count++;
           }
       }
       return count;
   }
Dim
Уровень 16, Житомир, Украина
10 апреля 2021, 18:30
насколько я понимаю, то в первом методе ты принимаешь в кач-ве аргументов мапу и еще стринг, который нигде не используется. Зачем? тоже самое и во втором. далее
pair.getKey() == pair.getKey()
как по мне, то бред, у нас ключи всегда уникальны. ты проверяешь ничто. ну и тоже самое во втором методе. его можно изменить и сравнивать Value новой мапы с Value начальной мапы и уже потом увеличивать счетчик, если есть совпадения.
Dim
Уровень 16, Житомир, Украина
28 марта 2021, 11:33
подскажите зачем нам создавать новый словарь и передавать в него значения старого? почему мы не можем пользоваться старым словарем? не могу понять
Dim
Уровень 16, Житомир, Украина
28 марта 2021, 16:29
решил через итератор и подсказки) но все равно не понял почему нам надо 2й словарь, если решаем без итератора
ARCOS
Уровень 19, Москва, Россия
9 апреля 2021, 16:49
насколько я понял, нельзя напрямую менять коллекцию при итерации, для этого надо создавать 2-й словарь.
Александр
Уровень 36, Санкт-Петербург
25 марта 2021, 18:43
Взял логику решения из задачи про летние месяца, прошло)
Map<String, Integer> copy = new HashMap<>(map);
       for (Map.Entry<String, Integer> value : copy.entrySet()) {
         String zn = value.getKey();
           int zp = value.getValue();
           if (zp<500) {
              map.remove(zn,zp);
Игорь
Уровень 11, Тверь, Россия
2 марта 2021, 14:00
После предыдущих задач эта просто расслабуха!
Mister Khokhma
Уровень 20, Кемерово
25 февраля 2021, 14:24
Подскажите пожалуйста, почему в методе removeItemFromMap создается новый мап?
Alexander Mul
Уровень 25, Warsaw
11 февраля 2021, 12:34
Изначально пришло в голову решить с помощью removeIf ArrayList<Integer> copyMapValues = new ArrayList<>(map.values()); copyMapValues.removeIf(x -> x < 500); Но потом передумал и просто решил с помощью метода удаления имен из задачи "Нам повторы не нужны" только переделал немного
Дмитрий
Уровень 15
22 февраля 2021, 06:28
А можно ведь было просто получить коллекцию значений мапы и на неё использовать removeIf
map.values().removeIf(v -> v < 500)
Alexander Mul
Уровень 25, Warsaw
22 февраля 2021, 11:35
Блин я был так близко)) аха) спасибо дошло)))😀
Дмитрий
Уровень 15
22 февраля 2021, 13:35
Как оно там на 12 ?=) Учитывая когда ты здесь был, то прошёл до туда довольно быстро...По сколько часов уделяешь джаварашу и читаешь что то ещё ?
Alexander Mul
Уровень 25, Warsaw
22 февраля 2021, 18:48
Всё максимальное свободное время Бывает там 2- 3 часа по выходным вообще могу и по 6-8 сидеть потом перерыв и потом ещё часа 2 зарядить но это бывает редко, стараюсь в общем Там дальше к стати легко будет ну особо пока что сложно Шмидта посматриваю когда нужно использую его как справочник в основном из теории пока и тут хватает статей куча сдесь)
Дмитрий
Уровень 15
23 февраля 2021, 04:39
Да, хороший напор. Хотелось чтоб и дальше такой же был =) На счёт книги посоветовали тут или ещё может где ?
Alexander Mul
Уровень 25, Warsaw
23 февраля 2021, 15:43
Тут посоветовали Просто в комментах увидел где-то только не Шмидт а Шильдт, Java_Polnoe_rukovodstvo_-_Gerbert_Shildt_10-e_izdanie
Дмитрий
Уровень 15
23 февраля 2021, 19:13
Спасибо большое =) Удачи в твоём прекрасном деле, ты комменты где нить по пути на уровнях оставляй, авось догоню =)
Alexander Mul
Уровень 25, Warsaw
23 февраля 2021, 19:21
Ok) и тебе удачи)
Andrew
Уровень 16, Москва, Россия
17 января 2021, 19:22
Задача решается элементарно путем незначительного изменения метода удаления имен из задачи "Нам повторы не нужны")
Артём
Уровень 26, Россия
29 декабря 2020, 09:47
Одинаковых значений типа "ключ" не должно быть, ошибку не выдает и не записывает в Map, будьте внимательны, уйдет напрасно много попыток)
Артём
Уровень 26, Россия
29 декабря 2020, 09:49
Сделал через Iterator : ... Integer value = pair.getValue(); if (value < 500) { iterator.remove(); }