• Java Collection 知识体系的建立


     (注明一下,我所说的 Container    不是 java.awt.Container , 而是数据对象的容器 Container

    对于  Java 中Collection 与 Map 中一直很困惑,这是从学习Java 以来就有的,现在总算理清了。

    困惑

     学的时候Collection 与 Map 是一起讲的,但是在学习的时候又感觉它们是两部分内容。

    这张图我相信很多人都见过。


    但我一直认为少了些什么。


    一找 Java 容器图,又找到这张图:


    留我在风中凌乱。。。


    答案

    直到我想起了这么一句话:Java不适合于作为主要编程教学语言。我才反应过来,我思考的方向有问题。因为 Java 是一门商业化的并运用于实际的语言。它是基于工程的。所以,如果从工程方面来看的话,Java 不是一个整体,因为我是基于完全抽象的理论的学习方式去看 Java ,而理论应当是完备而清晰的。这和教学时候马士兵老师把Java从工程方面来讲,当然对接不上。

    问题的源头想清楚了,那么答案就很简单了。

    这是纯理论上Java Container 的样子: 



    这也是我们所希望看到的样子。可惜,理论与实际是两回事。Java 实际实现中并没有 将数据对象 Container 单独罗列出来,做成一个 Java. Container 。Map / Collection 在java.util 下,而 Array 在 java.lang.Object 下。

    这才是 Java 实际实现的 Container :


    简化一下,就成了这样:


    之所以实际实现的时候这么复杂,我想这正是因为 Java 是一个不断迭代的语言吧。毕竟 Java 是面向应用的, 实际需要的先做出来,把问题解决了先。解决完问题,一抽象解决问题过程中的知识,发现更多知识。但是当把这些拓展知识整理实现后又只能强行黏在原来的工程之上。因为你总不可能看原来的台子搭得不好就拆了重搭吧。这台子上的人怎么办,就算没人,谁能保证这个台子就一定是最好的,不需要再拆?所以我想来,也就只有在一开始的时候好歹留些余地给将来需要拓展的时候。这才是实际。

    体会编程思想是真的重要。

    总结

    那我再以依次推进的方式,总结下:

    1.   纯抽象的Container 应当是这样:


    2.   只求运用 Java 来解决问题,不想深入了解实际 Java 中Container 的底层实现,可以把Container 理解成这样:


    3.   而 Java 中Container 的底层结构是这样的:


  • 相关阅读:
    同一位置(同一个ImageView)显示不同的图片levellist (转)
    LinearLayout android:layout_weight的理解
    给C盘减减肥,让你电脑飞一般速度!
    (Android实战)界面设计注意事项
    利用sender的Parent获取GridView中的当前行(转载)
    用SQL查看字符串ASCII码
    自己写DataPage分页
    连接长宽高的UDF
    把Dictionary绑定到combox
    trackbar和processbar功能合并
  • 原文地址:https://www.cnblogs.com/Sherlock-J/p/12926014.html
Copyright © 2020-2023  润新知