Редко оставляю комментарии, но тут хочется поблагодарить автора видео. Его курс очень четко описывает выбранные темы, посмотрел выборочно несколько видео по темам, которые вызывали вопросы и самое понятное объяснение нашел на этом канале. Очень жалко, что мало подписчиков, хотя уровень подготовки и реализации видео на высшем уровне!!!
Не могу понять, почему не работает строка. map.entrySet().removeIf(entry -> entry.getValue().equals(removeDubl(map))); Если вместо removeDubl(map) вставляешь конкретную строку(через" "), то работает.
@@artemvorov for (Map.Entry entry : map.entrySet()) { if (entry.getValue().equals(с чем тут сравнивать?)) } У "map.entrySet()" не вызовешь ".getValue()".
ДЗ: /* Создать словарь (Map) занести в него 5 записей по принципу «Фамилия» - «Имя». Проверить сколько людей имеют совпадающие с заданным имя или фамилию: - создать метод getCountTheSameFirstName(Map map, String name), который должен вернуть количество пар с именем, которое приходит в аргумент name - создать метод getCountTheSameLastName(Map map, String lastName), который должен вернуть количество пар с фамилией, которая приходит в аргумент lastName */ /* Удалить всех людей, родившихся летом Создать словарь (Map) и занести в него 5 записей по принципу: «фамилия» - «дата рождения». Удалить из словаря всех людей, родившихся летом. map.put("Jhon", new Date("JUNE 1 1980")); map.put("Mark", new Date("JUNE 5 1999")); map.put("Elone", new Date("DECEMBER 13 1996")); map.put("Stieve", new Date("JUNE 1 1980")); map.put("Clark", new Date("MARCH 1 1980")); */ /* Удалить людей, имеющих одинаковые имена Создать словарь (Map) занести в него десять записей по принципу «фамилия» - «имя». Удалить людей, имеющих одинаковые имена. map.put("Rooney", "Leo"); map.put("Lloris", "Hugo"); map.put("Messi", "Leo"); map.put("Ronaldo", "Cristiano"); map.put("Maldini", "Paolo"); map.put("Indzaghi", "Pipo"); map.put("Del Piero", "Alesandro"); map.put("Balotelli", "Mario"); map.put("Gotze", "Mario"); map.put("Gomez", "Mario"); */ /* Программа вводит с клавиатуры имя месяца и выводит его номер на экран в виде: «May is 5 month». map.put("January",1); map.put("February",2); map.put("March",3); map.put("April",4); map.put("May",5); map.put("June",6); map.put("July",7); map.put("August",8); map.put("September",9); map.put("October",10); map.put("November",11); map.put("December",12); */
Я до сих пор не понял 1 задачу. Получается, нужно вводить просто разные фамилии? Какой тогда смысл проверять количество одинковых, если их либо нет, либо она одна? Или всё таки как-то нужно засунуть в ключи одинаковые фамилии?
@@TSAR_TOP можно конечно и одинаковые фамилии в ключ засунуть, но там уже будет не String, а какой-то кастомный класс, типа User, с полями id, lastName. Но в этой задаче это можно не делать.
Два дня пыхтел. Знаний конечно пока не хватает. package com.company.DZ.hashMap5; import java.util.*; public class Main { public static void main(String[] args) { Map map=new HashMap(); map.put("Ivanov","Ivan"); map.put("Popov","Sergey"); map.put("Petrov","Ivan"); map.put("Krylov","Opupey"); map.put("Sidorov","Sergey"); map.put("Drozdov","Varfalamey"); map.put("Drodov","Varfalamey"); map.put("Ordov","Varfalamey"); int i=0; for (Map.Entry entry : map.entrySet()) { i++; } for (int j = 0; j entry.getValue().equals(a)); }
for (Map.Entry entry : map.entrySet()) { System.out.println(entry);} } public static String removeDubl(Map map){ String str=null; for (String value : map.values()) { int count=0; for (String s : map.values()) { if (value.equals(s)){ count++; if (count>1){str=value;} } } } return str; } }
@@aramzoryan И здесь if (count>1){str=value;} лучше сделать так: if (count > 1) { return value; } Так ты не будешь делать кучу лишних иттераций, а сразу будешь обрывать цикл. Если у тебя count > 1 ты уже можешь сказать, что эту пару надо удалять, а в твоём варианте ты продолжаешь искать повторения, причём даже у других значений.
Редко оставляю комментарии, но тут хочется поблагодарить автора видео. Его курс очень четко описывает выбранные темы, посмотрел выборочно несколько видео по темам, которые вызывали вопросы и самое понятное объяснение нашел на этом канале. Очень жалко, что мало подписчиков, хотя уровень подготовки и реализации видео на высшем уровне!!!
Чётко и подробно. Все бы так объясняли. Лайк
Благодаря видосу я понял equals и hashCode.
Хотя до этого много чего читал, и смотрел на ютубе
спасибо! Идеальное видео
При вводе промежуточной переменной заработало.
Не могу понять, почему не работает строка.
map.entrySet().removeIf(entry -> entry.getValue().equals(removeDubl(map)));
Если вместо removeDubl(map) вставляешь конкретную строку(через" "), то работает.
Я не вижу реализацию метода removeDubl(), не смогу помочь.
Как же сравнить значения элементов в мапе?
Ты можешь получить ключ или значение из пары при помощи методов getKey() и getValue() и потом уже сравнивать эти значения.
@@artemvorov С помощью встроенного цикла в цикле?
@@artemvorov for (Map.Entry entry : map.entrySet()) {
if (entry.getValue().equals(с чем тут сравнивать?))
}
У "map.entrySet()" не вызовешь ".getValue()".
@@aramzoryan Да, можешь использовать вложенный цикл
ДЗ:
/*
Создать словарь (Map) занести в него 5 записей по принципу «Фамилия» - «Имя».
Проверить сколько людей имеют совпадающие с заданным имя или фамилию:
- создать метод getCountTheSameFirstName(Map map, String name), который должен вернуть количество
пар с именем, которое приходит в аргумент name
- создать метод getCountTheSameLastName(Map map, String lastName), который должен вернуть количество
пар с фамилией, которая приходит в аргумент lastName
*/
/* Удалить всех людей, родившихся летом
Создать словарь (Map) и занести в него 5 записей по принципу: «фамилия» - «дата рождения».
Удалить из словаря всех людей, родившихся летом.
map.put("Jhon", new Date("JUNE 1 1980"));
map.put("Mark", new Date("JUNE 5 1999"));
map.put("Elone", new Date("DECEMBER 13 1996"));
map.put("Stieve", new Date("JUNE 1 1980"));
map.put("Clark", new Date("MARCH 1 1980"));
*/
/* Удалить людей, имеющих одинаковые имена
Создать словарь (Map) занести в него десять записей по принципу «фамилия» - «имя».
Удалить людей, имеющих одинаковые имена.
map.put("Rooney", "Leo");
map.put("Lloris", "Hugo");
map.put("Messi", "Leo");
map.put("Ronaldo", "Cristiano");
map.put("Maldini", "Paolo");
map.put("Indzaghi", "Pipo");
map.put("Del Piero", "Alesandro");
map.put("Balotelli", "Mario");
map.put("Gotze", "Mario");
map.put("Gomez", "Mario");
*/
/*
Программа вводит с клавиатуры имя месяца и выводит его номер на экран в виде: «May is 5 month».
map.put("January",1);
map.put("February",2);
map.put("March",3);
map.put("April",4);
map.put("May",5);
map.put("June",6);
map.put("July",7);
map.put("August",8);
map.put("September",9);
map.put("October",10);
map.put("November",11);
map.put("December",12);
*/
в 1 задаче ловушка джокера, я искал реализации мапы с одинаковыми ключами-фамилиями
Я до сих пор не понял 1 задачу. Получается, нужно вводить просто разные фамилии? Какой тогда смысл проверять количество одинковых, если их либо нет, либо она одна?
Или всё таки как-то нужно засунуть в ключи одинаковые фамилии?
@@TSAR_TOP всё верно, фамилия будет максимум одна. Смысл в том, что бы ты поработал с ключами в map :)
@@TSAR_TOP можно конечно и одинаковые фамилии в ключ засунуть, но там уже будет не String, а какой-то кастомный класс, типа User, с полями id, lastName. Но в этой задаче это можно не делать.
@@artemvorov спасибо
Два дня пыхтел. Знаний конечно пока не хватает.
package com.company.DZ.hashMap5;
import java.util.*;
public class Main {
public static void main(String[] args) {
Map map=new HashMap();
map.put("Ivanov","Ivan");
map.put("Popov","Sergey");
map.put("Petrov","Ivan");
map.put("Krylov","Opupey");
map.put("Sidorov","Sergey");
map.put("Drozdov","Varfalamey");
map.put("Drodov","Varfalamey");
map.put("Ordov","Varfalamey");
int i=0;
for (Map.Entry entry : map.entrySet()) {
i++;
}
for (int j = 0; j entry.getValue().equals(a));
}
for (Map.Entry entry : map.entrySet()) {
System.out.println(entry);}
}
public static String removeDubl(Map map){
String str=null;
for (String value : map.values()) {
int count=0;
for (String s : map.values()) {
if (value.equals(s)){
count++;
if (count>1){str=value;}
}
}
}
return str;
}
}
А этот кусок кода зачем здесь?
int i=0;
for (Map.Entry entry : map.entrySet()) {
i++;
}
Это ты так map.size() заменил?)
@@artemvorov Забыл про map.size() . Заклинило.
@@aramzoryan
И здесь
if (count>1){str=value;}
лучше сделать так:
if (count > 1) {
return value;
}
Так ты не будешь делать кучу лишних иттераций, а сразу будешь обрывать цикл. Если у тебя count > 1 ты уже можешь сказать, что эту пару надо удалять, а в твоём варианте ты продолжаешь искать повторения, причём даже у других значений.