Ребята, почему ваш алгоритм решил, что мой решение не верно?
Согласен, метод конвертации Map => Set у вас красивей и изящней, чем мой. Но ведь и мой работает :)
Я так же возвращаю "имя кота" (идентификатор объекта Кот" и, собственно, само имя (объекта) кота.
Хотя, ваш метод конвертации выучу!
package com.javarush.task.jdk13.task09.task0927;
import java.util.*;
/*
Десять котов
*/
public class Solution {
public static void main(String[] args) {
Map<String, Cat> map = createMap();
Set<Cat> set = convertMapToSet(map);
printCatSet(set);
}
public static Map<String, Cat> createMap() {
Map<String, Cat> mapCat = new HashMap<>();
mapCat.put("кот0", new Cat("Барсик"));
mapCat.put("кот1", new Cat("Мурзик"));
mapCat.put("кот2", new Cat("Васька"));
mapCat.put("кот3", new Cat("Рыжик"));
mapCat.put("кот4", new Cat("Марсик"));
mapCat.put("кот5", new Cat("Галчонок"));
mapCat.put("кот6", new Cat("Юрик"));
mapCat.put("кот7", new Cat("Валик"));
mapCat.put("кот8", new Cat("Дизелёк"));
mapCat.put("кот9", new Cat("Кот"));
return mapCat;
}
public static Set<Cat> convertMapToSet(Map<String, Cat> map) {
Set<Cat> setCat = new HashSet<>();
for (Map.Entry<String, Cat> entry : map.entrySet()) {
setCat.add(entry.getValue());
}
return setCat;
}
public static void printCatSet(Set<Cat> set) {
for (Cat cat : set) {
System.out.println(cat);
}
}
public static class Cat {
public String name;
public Cat(String name) {
this.name = name;
}
public String toString() {
return "Cat " + this.name;
}
@Override
public boolean equals(Object o) {
if (this == o) {
return true;
}
if (!(o instanceof Cat)) {
return false;
}
Cat cat = (Cat) o;
return Objects.equals(name, cat.name);
}
@Override
public int hashCode() {
return Objects.hash(name);
}
}
}
//Requirements:
// 1. Программа не должна считывать данные с клавиатуры.
// 2. В методе createMap() необходимо создать новый объект HashMap<String, Cat>.
// 3. В методе createMap() необходимо добавить в словарь 10 котов в виде «Имя»-«Кот», и вернуть созданный словарь.
//4. В методе convertMapToSet(Map<String, Cat>) необходимо создать и вернуть множество котов, полученных из переданного словаря.
//5. Программа должна вывести всех котов из множества на экран.
mapCat.put("кот0", new Cat("кот0"))или даже тогда ужmapCat.put("Барсик", new Cat("Барсик"))В том смысле что я кажется так и сделал в своё время, только лениво через цикл номерные имена всем котам 😁