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

  • 5
  • Недоступна
Наш заказчик — казино «Риге-Тау» с планеты Диблублублу. Крайне заносчивые ребята, но платят хорошо. Они заказали нам сделать программу автоматической рассылки писем потенциальным клиентам. Не пугайтесь, джуниору (вам) поручена простая задача: создать словарь типа «фамилия»-«зарплата» и удалить из него тех, у кого зарплата ниже 500 кредитов.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (248)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Сергей
8 уровень, Москва
20 апреля, 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) {

    }
}
Евгений
9 уровень
8 апреля, 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
11 уровень, Житомир
10 апреля, 18:30
насколько я понимаю, то в первом методе ты принимаешь в кач-ве аргументов мапу и еще стринг, который нигде не используется. Зачем? тоже самое и во втором. далее
pair.getKey() == pair.getKey()
как по мне, то бред, у нас ключи всегда уникальны. ты проверяешь ничто. ну и тоже самое во втором методе. его можно изменить и сравнивать Value новой мапы с Value начальной мапы и уже потом увеличивать счетчик, если есть совпадения.
Dim
11 уровень, Житомир
28 марта, 11:33
подскажите зачем нам создавать новый словарь и передавать в него значения старого? почему мы не можем пользоваться старым словарем? не могу понять
Dim
11 уровень, Житомир
28 марта, 16:29
решил через итератор и подсказки) но все равно не понял почему нам надо 2й словарь, если решаем без итератора
ARCOS
11 уровень, Киев
9 апреля, 16:49
насколько я понял, нельзя напрямую менять коллекцию при итерации, для этого надо создавать 2-й словарь.
Александр
12 уровень, Санкт-Петербург
25 марта, 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);
Игорь
10 уровень, Тверь
2 марта, 14:00
После предыдущих задач эта просто расслабуха!
Mister Khokhma
20 уровень, Кемерово
25 февраля, 14:24
Подскажите пожалуйста, почему в методе removeItemFromMap создается новый мап?
Alexander Mul
20 уровень, Warsaw
11 февраля, 12:34
Изначально пришло в голову решить с помощью removeIf ArrayList<Integer> copyMapValues = new ArrayList<>(map.values()); copyMapValues.removeIf(x -> x < 500); Но потом передумал и просто решил с помощью метода удаления имен из задачи "Нам повторы не нужны" только переделал немного
Дмитрий
13 уровень
22 февраля, 06:28
А можно ведь было просто получить коллекцию значений мапы и на неё использовать removeIf
map.values().removeIf(v -> v < 500)
Alexander Mul
20 уровень, Warsaw
22 февраля, 11:35
Блин я был так близко)) аха) спасибо дошло)))😀
Дмитрий
13 уровень
22 февраля, 13:35
Как оно там на 12 ?=) Учитывая когда ты здесь был, то прошёл до туда довольно быстро...По сколько часов уделяешь джаварашу и читаешь что то ещё ?
Alexander Mul
20 уровень, Warsaw
22 февраля, 18:48
Всё максимальное свободное время Бывает там 2- 3 часа по выходным вообще могу и по 6-8 сидеть потом перерыв и потом ещё часа 2 зарядить но это бывает редко, стараюсь в общем Там дальше к стати легко будет ну особо пока что сложно Шмидта посматриваю когда нужно использую его как справочник в основном из теории пока и тут хватает статей куча сдесь)
Дмитрий
13 уровень
23 февраля, 04:39
Да, хороший напор. Хотелось чтоб и дальше такой же был =) На счёт книги посоветовали тут или ещё может где ?
Alexander Mul
20 уровень, Warsaw
23 февраля, 15:43
Тут посоветовали Просто в комментах увидел где-то только не Шмидт а Шильдт, Java_Polnoe_rukovodstvo_-_Gerbert_Shildt_10-e_izdanie
Дмитрий
13 уровень
23 февраля, 19:13
Спасибо большое =) Удачи в твоём прекрасном деле, ты комменты где нить по пути на уровнях оставляй, авось догоню =)
Alexander Mul
20 уровень, Warsaw
23 февраля, 19:21
Ok) и тебе удачи)
Andrew
16 уровень, Москва
17 января, 19:22
Задача решается элементарно путем незначительного изменения метода удаления имен из задачи "Нам повторы не нужны")
Артём
20 уровень
29 декабря 2020, 09:47
Одинаковых значений типа "ключ" не должно быть, ошибку не выдает и не записывает в Map, будьте внимательны, уйдет напрасно много попыток)
Артём
20 уровень
29 декабря 2020, 09:49
Сделал через Iterator : ... Integer value = pair.getValue(); if (value < 500) { iterator.remove(); }
Dmitriy Sugak Team Lead в Luxoft
28 декабря 2020, 09:53
Начиная с Джава 8 можно сделать удаление в одну строчку:
map.entrySet().removeIf(v -> v.getValue() < 500) ;
Domingo el Sumeri
9 уровень, Екатеринбург
15 февраля, 18:29
можно и так:
map.values().removeIf(v -> v < 500);