Прошу объяснить: 1. Как получилось что массив состоящий из одних значений типа String получилось положить в Map, если в Map не одна строка, а пара Ключ-Значение? 2. В конце программы есть переопределенный метод String toString.. Почему в итоге метод toUpperCase увеличил только значение, а не ключ? (борис - "БОРИС") package com.javarush.task.task08.task0803; import java.util.HashMap; import java.util.Map; /* Коллекция Map из котов */ public class Solution { public static void main(String[] args) throws Exception { String[] cats = new String[]{"васька", "мурка", "дымка", "рыжик", "серый", "снежок", "босс", "борис", "визя", "гарфи"}; Map<String, Cat> map = addCatsToMap(cats); for (Map.Entry<String, Cat> pair : map.entrySet()) { System.out.println(pair.getKey() + " - " + pair.getValue()); } } public static Map<String, Cat> addCatsToMap(String[] cats) { Map<String,Cat>catmap = new HashMap<>(); for (String i:cats) { catmap.put(i, new Cat(i)); } return catmap; } public static class Cat { String name; public Cat(String name) { this.name = name; } @Override public String toString() { return name != null ? name.toUpperCase() : null; } } } ВЫВОД: борис - БОРИС гарфи - ГАРФИ мурка - МУРКА дымка - ДЫМКА босс - БОСС серый - СЕРЫЙ визя - ВИЗЯ снежок - СНЕЖОК васька - ВАСЬКА рыжик - РЫЖИК