Вероятно, это уже ступор, убил 3 часа эту задачу! Начинаю понимать, почему ИТникам там много платят сейчас. Жесть. Вынос мозга, и это только начало...
Пргу сделал, опять же начитавшись всего всего. Но не могу потом в мэйне вывести свои результаты.
"ДО УДАЛЕНИЯ" - порядок. А вот "ПОСЛЕ УДАЛЕНИЯ" - ступор. в том место, где в цикле должно стоять "map" становятся только наши методы, а "map" - "краснеет", зараза такая, за меня - олуха, вероятно.
(В конце кодаБ выделил жирным и подчеркнул).
package com.javarush.task.task08.task0817;
import java.beans.beancontext.BeanContextChild;
import java.util.*;
/*
Нам повторы не нужны
*/
public class Solution {
public static Map<String, String> createMap() {
Map<String, String> map = new HashMap<>();
map.put("Иванов", "Иван");
map.put("Петров", "Петя");//напишите тут ваш код
map.put("Сидоров", "Петя");
map.put("Кужев", "Костя");
map.put("Куцин", "Вася");
map.put("Пентюк", "Вася");
map.put("Шмурдяк", "Колян");
map.put("Флюст", "Витя");
map.put("Жбан", "Киндрат");
map.put("Поцев", "Поц");
return map;
}
public static void removeTheFirstNameDuplicates(Map<String, String> map) {
Map<String, String> map1 = new HashMap<>(map);
ArrayList<String> names = new ArrayList<>();
for (Map.Entry<String, String> pair1 : map1.entrySet()) {
String value1 = pair1.getValue();
names.add(value1);
}
Collections.sort(names);
for (int i = 0; i < names.size() - 1; i++) {
if (names.get(i).equalsIgnoreCase(names.get(i + 1))) {
removeItemFromMapByValue(map,names.get(i));
}
}
}
public static void removeItemFromMapByValue (Map < String, String > map, String value){
Map<String, String> copy = new HashMap<>(map);
for (Map.Entry<String, String> pair : copy.entrySet()) {
if (pair.getValue().equals(value)) {
map.remove(pair.getKey());
}
}
}
public static void main (String[]args){
System.out.println("BEFORE DELETION: ");
for (Map.Entry<String, String> pair : createMap().entrySet())
{
String key = pair.getKey();
String value = pair.getValue();
System.out.println(key + " " + value);
}
System.out.println("AFTER DELETION: ");
removeTheFirstNameDuplicates(createMap());
for (Map.Entry<String, String> pair : map.entrySet())
{
String key = pair.getKey();
String value = pair.getValue();
System.out.println(key + " " + value);
}
}
}
Дмитрий
26 уровень
Не могу вывести итог, после удаления.
Решен
Комментарии (7)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Стас ПасинковSoftware Developer в ZipyMaster
18 марта 2020, 21:10
там при создании вопроса где-то галочка должна быть "прикрепить код" или как-то так. лучше ее используйте, а не как вы сделали
+1
Vit
18 марта 2020, 21:05
Отладчик помогает понять слабое место
0
Maxim Tikhonenkov
18 марта 2020, 20:38решение
Метод вначале создает новую мапу, а ты его пытаешься везде дергать и в итоге, как бы делаешь действия над новой мапой каждый раз. Задай мапу вначале и с ней работай:
Map<String, String> myMap = createMap();
+2
Дмитрий
19 марта 2020, 19:08
Максим, это сделать в МЭЙНЕ, я так понимаю?? (Map<String, String> myMap = createMap();)
0
Maxim Tikhonenkov
19 марта 2020, 19:16
ну да. У тебя после этого есть переменная myMap. И вот с ней уже делаешь преобразования
0
Дмитрий
19 марта 2020, 19:24
Чёрт! Получилось! ))
Ай спасибо, разобрался! ))
0
Maxim Tikhonenkov
19 марта 2020, 19:26
удачи. сам порой туплю над простыми вещами
0