предполагается, что у меня есть собственная реализация связного списка:
class ListNode {
int val;
ListNode next;
ListNode(int x) {
val = x;
}
}
Когда у меня есть такая простая настройка, я могу использовать узел на карте:
ListNode A = new ListNode(1);
ListNode B = new ListNode(2);
ListNode C = new ListNode(3);
A.next = B;
B.next = C;
Map<ListNode, Integer> hmp = new HashMap<>(Map.ofEntries(
Map.entry(A, 1)
));
Когда я печатаю картуобъект, я получил:
System.out.println(hmp);
// >>> {ListNode@57829d67=1}
Однако, после того, как я реализовал метод toString для моего связного списка, чтобы я мог распечатать его прямо:
public String toString() {
if (this.next != null) {
return this.val + "->" + this.next.showString();
} else {
return String.valueOf(A.val);
}
}
Теперь, если я могу напечататьсвязанный список, но если я снова распечатаю карту:
System.out.println(A);
// >>> 1->2->3
System.out.println(hmp);
// >>> {1->2->3=1}
Вы можете видеть, что я потерял оригинальный способ показать личность ListNode
объекта на карте.
- Есть ли способ исправить это?
- Есть ли метод, который я могу вызвать ListNode, чтобы показать
ListNode@57829d67
?
Единственное, что я вижу, это непереопределите метод toString, но создайте другой метод, чтобы показать строку моего объекта связного списка.Я не уверен, что это хорошая идея
Спасибо