Почему результат добавления массива в значение Map не возвращает массив при выводе?

Как можно улучшить вывод данных из объекта `TreeMap` в Java для получения более понятной и читаемой информации, а не `[Ljava.lang.String;@6fc7e828`?
  • 2 августа 2024 г. 12:53
Ответы на вопрос 2
При добавлении массива в значение Map в Java, массив хранится как один объект, поэтому при выводе его через `toString()` будет показан только адрес в памяти, а не содержимое массива.

Для улучшения вывода данных из объекта `TreeMap` в Java, можно воспользоваться циклом `for-each`, чтобы получить доступ к ключам и значениям и вывести их более понятным способом. Например:

```java
Map<Integer, String[]> map = new TreeMap<>();
map.put(1, new String[]{"value1", "value2", "value3"});

for (Map.Entry<Integer, String[]> entry : map.entrySet()) {
    System.out.print("Key: " + entry.getKey() + ", Values: ");
    for (String value : entry.getValue()) {
        System.out.print(value + " ");
    }
    System.out.println();
}
```

Этот код позволит вывести значения из массива в более удобочитаемом формате.
[Ljava.lang.String;@6fc7e828 это и есть вывод массива. 

Если хотите красиво, то надо Arrays.toString(permissionId.get("4"));

Или дополнительно оборачивать объектом с переопределением toString()

Массив это объект в Java, но у него нет возможности сделать переопределение toString()

UPDATE:
permissionId.forEach((k,v)-> System.out.println(String.format("%s:%s", k, Arrays.toString(v))));
Похожие вопросы