На данный вопрос уже ответили:
Допустим мы имеем Map<Integer, Integer[]>
и нам надо воспользоваться toString.
Тут и проблема: нам возвращают совсем не ту строку, что можно ожидать.
Например:
Map<Integer, Integer[]> mp = new HashMap<Integer, Integer[]>();
mp.put(1, new Integer[]{1, 2});
mp.put(2, new Integer[]{2, 3});
mp.put(3, new Integer[]{3, 4});
out.println(mp.toString());
Так нам выводит {1=[Ljava.lang.Integer;@7852e922, 2=[Ljava.lang.Integer;@4e25154f, 3=[Ljava.lang.Integer;@70dea4e}
вместо более ожидаемого {1=[1, 2], 2=[2, 3], 3=[3, 4]}
. И вроде как логично, но совсем не то что нам надо.
Что делать, чтобы получить что хочется? Явно есть решение, которое не есть обработка структуры вручную.
К сожалению, в Java у массивов примитивных типов не переопределён метод toString
. Поэтому к ним применяется метод, содержащийся в классе Object
. Этот метод, конечно, не знает, как нужно выводить массивы. Однако специальный метод для этого есть в классе Arrays
. Поэтому вы можете создать свой класс, который будет содержать массив целых чисел с переопределённым методом toString
.
Например, вот так:
class Ideone
{
public static void main (String[] args) throws java.lang.Exception
{
Map<Integer, IntegerArray> mp = new HashMap<Integer, IntegerArray>();
mp.put(1, new IntegerArray(1, 2));
mp.put(2, new IntegerArray(2, 3));
mp.put(3, new IntegerArray(3, 4));
System.out.println(mp);
}
}
class IntegerArray {
int[] array;
IntegerArray(int... array){
this.array = array;
}
@Override
public String toString(){
return Arrays.toString(array);
}
}
Вывод будет:
{1=[1, 2], 2=[2, 3], 3=[3, 4]}
В Java toString
для массивов не выводит их значения, а всего лишь показывает объект в текстовом представлении. Для получения значений массива нужно воспользоваться методом toString
класса Arrays
. Соответственно, для вашего примера достаточно:
for(Map.Entry<Integer,Integer[] > entry : mp.entrySet())
{
System.out.print(entry.getKey());
System.out.println(Arrays.toString(entry.getValue()));
}
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Как настроить intelij idea, чтобы можно было перейти к читабельным исходникам, например посмотреть, как реализован HashSet
Допустим, у меня есть классы : Текст, Предложение, Слово, Буква, ПунктуацияЗадача: удалить в каждом слове повторяющиеся буквы
Здравствуйте) Решаю задачку по колоде карт на 1 сайте) Надо сделать перемешивание, сортировку, метод, который возвращает true, когда в колоде...
Как добавить стиль css('text-decoration', 'line-through') к label при включенном чекбоксе?