关于输出集合深度层次的一些理解(仅供参考,可能理解的不对)
2018-03-15 21:45
309 查看
一直很纳闷 为什么 每次输出自定义对象输出的就是所有的属性和属性值,而输出集合却只输出了集合中 用来存放元素的那个数组的值,后来我想肯定是toString()的问题,看了AbstractCollection中toString()的源码,发现toString是从iterator的next()拿的值,然后又找到了AbstractList&Itr 这个类,发现AbstractList中Iteritor()方法返回的是一个Itr对象,然后又看了一眼Itr的next()方法,发现每调用一次next方法,它就会调用get方法来获取指定索引位元素的值,get方法底层是通过for循环拿的。最终我理解之所以打印集合只拿出它的一个属性值 是因为他的最底层是通过遍历这个数组然后拿到指定元素,通过get()方法它就能利用for循环拿到这个元素,然后next()内部是调用get的。toString里面又是通过迭代器的next来拿值,然后拼接成字符串的。所以迭代器迭代出来值都是通过for循环遍历存放元素的数组拿来的。这也就不难理解为什么输出集合仅仅是集合中的一个属性的值了。
本人属于小白,以上解释仅供参考,如有错误,欢迎提出。 看源码看晕乎了。
本人属于小白,以上解释仅供参考,如有错误,欢迎提出。 看源码看晕乎了。
相关文章推荐
- 关于HTML你可能不知道的一些知识点
- 关于线程方法的一些个人理解
- 黑马程序员 关于学习多态时的一些理解
- 关于Android的一些理解
- 关于Apache/Tomcat/JBOSS/Neginx/lighttpd/Jetty等一些常见服务器的区别比较和理解
- (转)iPhone开发关于UDID和UUID的一些理解
- 关于范式的一些简单理解
- 关于对getchar一些小小的自学理解。。。
- 一些关于dagger2的理解
- 关于负载均衡一些概念的正确理解
- iPhone开发关于UDID和UUID的一些理解
- String 类的一些理解 关于==、equals、null
- 关于uboot和kernel的一些理解
- 关于java中集合类的理解
- 关于getchar()读取,EOF和CTRL+Z的一些理解
- 关于ajax的一些理解
- 关于深度学习理论方面的一些疑问
- 关于SVM的一些理解
- 黑马程序员-关于Java IO流的一些理解
- 关于innodb_file_per_table的一些理解