Подтвердить что ты не робот

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

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

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

enter image description here

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

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

return entrySet().toArray();

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

ConcurrentHashMap$WriteThroughEntry (id=193)
4b9b3361

Ответ 1

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

Ответ 2

Вам нужно создать форматировщик деталей поверх логической структуры. В приведенном ниже примере скриншота ваша логическая структура - ConcurrentHashMap $WriteThroughEntry. Вы можете добавить форматировщик деталей, щелкнув правой кнопкой мыши на строке, содержащей ConcurrentHashMap $WriteThroughEntry, и выбрав 'add detail formatter'.

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

enter image description here

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

При a

HashMap<Integer,String> map;

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

enter image description here

Ответ 3

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

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

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

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