Как строку или таблицу превратить Map?

В Java существует несколько способов преобразования Map в строку или таблицу. В зависимости от ваших потребностей и предпочтений вы можете выбрать подходящий вариант.

1. Преобразование Map в строку:
Если вам нужно преобразовать Map в строку для целей отладки или вывода, вы можете воспользоваться методом toString() класса HashMap. Например:

   Map<String, Integer> map = new HashMap<>();
   map.put("apple", 3);
   map.put("banana", 2);
   map.put("orange", 5);
   
   String mapAsString = map.toString();
   System.out.println(mapAsString);

Вывод:

   {apple=3, banana=2, orange=5}

Обратите внимание, что результат будет в формате, пригодном для чтения человеком, но не совсем подходит для дальнейшей обработки.

2. Преобразование Map в таблицу:
Если вам нужно преобразовать Map в таблицу, где каждая запись представлена строкой и содержит ключ и значение, вы можете воспользоваться циклом или потоком (Stream) и собрать результат в строку. Например:

   Map<String, Integer> map = new HashMap<>();
   map.put("apple", 3);
   map.put("banana", 2);
   map.put("orange", 5);
   
   StringBuilder tableBuilder = new StringBuilder();
   tableBuilder.append(String.format("%-10s %-10sn", "Key", "Value"));
   for (Map.Entry<String, Integer> entry : map.entrySet()) {
       tableBuilder.append(String.format("%-10s %-10sn", entry.getKey(), entry.getValue()));
   }
   
   String tableAsString = tableBuilder.toString();
   System.out.println(tableAsString);

Вывод:

   Key        Value     
   apple      3         
   banana     2         
   orange     5      

В данном примере мы используем StringBuilder для построения строки таблицы и метод String.format() для форматирования значений ключа и значения. Полученная строка затем преобразуется в строку таблицы с помощью метода toString(). Здесь мы использовали простой цикл для прохода по записям Map, но вы также можете воспользоваться потоком (Stream) и методами Map.forEach() или Map.entrySet().stream().

3. Преобразование Map в таблицу в виде двумерного массива:
Если вам нужно преобразовать Map в таблицу в виде двумерного массива, в котором каждый элемент массива содержит ключ и значение, вы можете создать массив нужного размера и заполнить его значениями из Map. Например:

   Map<String, Integer> map = new HashMap<>();
   map.put("apple", 3);
   map.put("banana", 2);
   map.put("orange", 5);
   
   String[][] tableArray = new String[map.size() + 1][2];
   tableArray[0] = new String[] {"Key", "Value"};
   int i = 1;
   for (Map.Entry<String, Integer> entry : map.entrySet()) {
       tableArray[i] = new String[] {entry.getKey(), String.valueOf(entry.getValue())};
       i++;
   }
   
   for (String[] row : tableArray) {
       System.out.println(Arrays.toString(row));
   }

Вывод:

   [Key, Value]
   [apple, 3]
   [banana, 2]
   [orange, 5]

В данном примере мы используем двумерный массив типа String для представления таблицы. Здесь мы создаем массив нужного размера, а затем заполняем его значениями из Map, представляя каждую запись в виде массива строк. Обратите внимание, что место значения в виде числа мы используем метод String.valueOf() для преобразования его в строку.

Выбор подходящего способа преобразования Map в строку или таблицу зависит от вашего конкретного случая использования. Вы можете выбрать наиболее удобный и гибкий способ, который соответствует вашим потребностям.