| 翻了下源码 hashSet里的toString方法是继承自AbstractCollection,里面重写了toString方法
 public String toString() {
 Iterator<E> it = iterator();
 if (! it.hasNext())
 return "[]";
 
 StringBuilder sb = new StringBuilder();
 sb.append('[');
 for (;;) {
 E e = it.next();
 sb.append(e == this ? "(this Collection)" : e);
 if (! it.hasNext())
 return sb.append(']').toString();
 sb.append(',').append(' ');
 }
 }
 hashMap里的toString继承自AbstractMap,里面重写了toString
 public String toString() {
 Iterator<Entry<K,V>> i = entrySet().iterator();
 if (! i.hasNext())
 return "{}";
 
 StringBuilder sb = new StringBuilder();
 sb.append('{');
 for (;;) {
 Entry<K,V> e = i.next();
 K key = e.getKey();
 V value = e.getValue();
 sb.append(key   == this ? "(this Map)" : key);
 sb.append('=');
 sb.append(value == this ? "(this Map)" : value);
 if (! i.hasNext())
 return sb.append('}').toString();
 sb.append(',').append(' ');
 }
 }
 |