Отладка Eclipse HashMap: логическая структура с использованием метода toString () Key и Value - PullRequest
19 голосов
/ 01 сентября 2011

Я недавно начал использовать Eclipse после использования IntelliJ в течение нескольких лет.При отладке Map с использованием IntelliJ, если ключ или объект реализует toString (), отображается хороший список строкового представления значения ключа.

В Eclipse, когда я выбираю Показать логическую структуру Я вижу что-то вроде следующего:

enter image description here

Проблема с этим представлением состоит в том, что вам нужно будет расширить каждую запись, чтобы увидеть фактический ключ и значение.Если вам нужно найти что-то на карте, содержащей более 10 элементов, это становится очень утомительным.

Я понимаю, что вы можете настроить собственную логическую структуру, и по умолчанию для карты будет выглядеть так:

return entrySet().toArray();

Есть ли способ, через пользовательскую логическую структуру или плагин для просмотра записей на карте более полезных, чем

ConcurrentHashMap$WriteThroughEntry (id=193)

Ответы [ 4 ]

55 голосов
/ 05 апреля 2012

Вам необходимо создать средство форматирования деталей поверх логической структуры.В приведенном вами примере снимка экрана ваша логическая структура - ConcurrentHashMap $ WriteThroughEntry.Вы можете добавить средство форматирования сведений, щелкнув правой кнопкой мыши строку, содержащую ConcurrentHashMap $ WriteThroughEntry, и выбрав «Добавить средство форматирования сведений».

Я только что выбрал этот пример, используя HashMap.

enter image description here

java.util.HashMap$Entry //  key + " - " + value

Для

HashMap<Integer,String> map;

.. Я быстро заполнилмусор, теперь я вижу:

enter image description here

9 голосов
/ 04 апреля 2012

Ну, я сделал уродливый обходной путь. Настройте этот форматировщик деталей для карты:

StringBuilder detail = new StringBuilder();
int i = 0;
for (Object k : keySet()) {
    detail.append((i++) + ": " + k + "\n");
}
return detail;

Затем в выходных данных найдите индекс записи с нужным ключом и найдите эту запись в дереве логической структуры.

Работает, но сам форматировщик деталей немного медленный и требует дополнительного шага. Кроме того, ключи не отсортированы, поэтому поиск нужного ключа на большой карте может быть затруднен (хотя теоретически сортировку можно выполнить в форматере).

8 голосов
/ 01 сентября 2011

Я обнаружил, что когда я выбираю значение на панели «Переменные» в отладчике, его значение отображается ниже с помощью метода toString ().Это хорошо работает, например, для карт.

2 голосов
/ 16 сентября 2014

Просто используйте Показать логическую структуру под окном выражений, чтобы сделать значения более читабельными.проверить это https://blog.codecentric.de/en/2013/04/again-10-tips-on-java-debugging-with-eclipse/

...