Java 集合重写 toString 方法: 自定义输出格式
在 Java 中,重写 HashMap、ArrayList 等集合的 toString 方法可以帮助您自定义输出格式,使其更易于阅读和理解。
方法:
- 创建子类: 创建继承自 HashMap 或 ArrayList 的新类,例如:
private class MyHashMap<K, V> extends HashMap<K, V> {
// 重写 toString 方法
}
private class MyArrayList<E> extends ArrayList<E> {
// 重写 toString 方法
}
-
重写 toString 方法: 在新类中重写 toString 方法,实现您想要的输出格式。
-
声明集合: 在您的类中声明 HashMap 或 ArrayList 时,使用新创建的子类作为类型。
示例代码:
public class A {
private MyHashMap<String, Integer> hashMap;
private MyArrayList<String> arrayList;
public A() {
hashMap = new MyHashMap<>();
hashMap.put('key1', 1);
hashMap.put('key2', 2);
arrayList = new MyArrayList<>();
arrayList.add('value1');
arrayList.add('value2');
}
@Override
public String toString() {
return 'A{' +
'hashMap=' + hashMap +
', arrayList=' + arrayList +
'}';
}
private class MyHashMap<K, V> extends HashMap<K, V> {
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append('{');
for (Map.Entry<K, V> entry : entrySet()) {
sb.append(entry.getKey()).append('=').append(entry.getValue()).append(', ');
}
if (!isEmpty()) {
sb.delete(sb.length() - 2, sb.length());
}
sb.append('}');
return sb.toString();
}
}
private class MyArrayList<E> extends ArrayList<E> {
@Override
public String toString() {
StringBuilder sb = new StringBuilder();
sb.append('[');
for (E element : this) {
sb.append(element).append(', ');
}
if (!isEmpty()) {
sb.delete(sb.length() - 2, sb.length());
}
sb.append(']');
return sb.toString();
}
}
}
在示例代码中,A 类声明了两个集合:hashMap 和 arrayList。这两个集合分别使用了 MyHashMap 和 MyArrayList 作为类型,这两个类都是继承自 HashMap 和 ArrayList 的。MyHashMap 和 MyArrayList 都重写了 toString 方法,在 toString 方法中按照指定格式输出集合中的元素。最后,在 A 类的 toString 方法中,使用了新的 toString 方法输出 hashMap 和 arrayList 的内容。
优点:
- 自定义输出格式: 可以根据需要灵活控制输出结果的格式。
- 可读性提高: 更加直观的展示集合内容,方便阅读和理解。
- 代码复用: 可以将重写的 toString 方法应用于不同的集合类。
注意:
- 重写 toString 方法不会改变集合本身的存储结构和功能。
- 确保重写的方法能够正确地处理空集合的情况。
通过重写 toString 方法,您可以更灵活地控制集合的输出格式,使其更符合您的需求。
原文地址: https://www.cveoy.top/t/topic/n1ds 著作权归作者所有。请勿转载和采集!