Java 的容器类 List 和 Map 中的 toString( ) 方法,maptostring
分享于 点击 42267 次 点评:106
Java 的容器类 List 和 Map 中的 toString( ) 方法,maptostring
我们在写代码的过程中,经常用到 list 和 map 的 toString 方法,但 list 和 map 的源码和 api 上的 list 和 map 中并没有重写 toString( ) 方法,为什么可以直接打印呢?
为了知道答案,可以设个断点,然后一步步执行(eclipse 环境下)就可以知道答案了.
一、List 中常用的ArrayList的toString() 继承了abstract class AbstractCollection 这个类:
public String toString()
{
Iterator iterator1 = iterator();
if(!iterator1.hasNext()){
return "[]";
}
StringBuilder stringbuilder = new StringBuilder();
stringbuilder.append('[');
do
{
Object obj = iterator1.next();
stringbuilder.append(obj != this ? obj : "(this Collection)");
if(!iterator1.hasNext())
return stringbuilder.append(']').toString();
stringbuilder.append(", ");
} while(true);
}
二、Map 中常用的 HashMap 的 toString( )继承与 abstract class AbstractMap 这个类
public String toString()
{
Iterator iterator = entrySet().iterator();
if(!iterator.hasNext()){
return "{}";
}
StringBuilder stringbuilder = new StringBuilder();
stringbuilder.append('{');
do
{
Map.Entry entry = (Map.Entry)iterator.next();
Object obj = entry.getKey();
Object obj1 = entry.getValue();
stringbuilder.append(obj != this ? obj : "(this Map)");
stringbuilder.append('=');
stringbuilder.append(obj1 != this ? obj1 : "(this Map)");
if(!iterator.hasNext())
return stringbuilder.append('}').toString();
stringbuilder.append(", ");
} while(true);
}
希望对您有所帮助。
相关文章
- 暂无相关文章
用户点评