zoukankan      html  css  js  c++  java
  • Java容器解析系列(0) 开篇

    最近刚好学习完成数据结构与算法相关内容:
    Data-Structures-and-Algorithm-Analysis
    想结合Java中的容器类加深一下理解,因为之前对Java的容器类理解不是很深刻,且在网上找了半天没有找到太好的关于容器类细节的讲解(其中找到一些博客,讲得很好,但是其中还是有些东西没有触碰到我原来的理解痛点),还是决定自己写一个Java容器解析系列.

    《Java编程思想》书中对容器进行完整的类关系图如下:

    官方文档:Java Collection Framework

    本系列将对上图中的类和接口进行分析.

    备注:Collection,国内的书籍翻译都为集合,个人认为欠妥,原因如下:

    1. 按照collect翻译为收集的概念,Collection翻译为聚集更加合理.
    2. Collection更多的是表示一种类与类的关系,参考文章java 类之间的四种关系详解,Collection翻译为聚合更为贴切。
    3. 集合,是一个数学概念,其英文翻译为Set,是集合论的主要研究对象。而Set在jdk中已有了归属,且其意义更接近数学中的集合,比如,数学中的集合的两种特性:
    • 互异性:一个集合中,任何两个元素都认为是不相同的,有时需要对同一元素出现多次的情形进行刻画,可以使用多重集
    • 无序性:一个集合中,元素之间是无序的。集合上可以定义序关系,定义了序关系后,元素之间就可以按照序关系排序。但就集合本身的特性而言,元素之间没有必然的序。
      这两个特性和jdk中的Set更符合.
      但是由于Collection翻译为集合被广泛应用,这里为了避免阅读困难,依然将Collection翻译为"集合".

    针对具体的集合类,本系列将从以下方面进行分析:

    1. 使用的数据结构及其特性(数组,链表,树,堆,邻接矩阵等)
    2. 增删改查实现及时间复杂度(包括迭代器实现等)
    3. 使用场景
    4. 特殊机制(扩容,rehash,弱引用的对象回收等)
    5. 面试相关

    本系列分析的源码为sun jdk7 的源码,如果某个集合类在之后有过大的修改,也会抽出来分析

    jdk8中添加了很多新特性,但个人认为对研究集合原理似乎没有帮助

    Let's go change the world,or changed by the world
  • 相关阅读:
    设计模式之工厂模式-抽象工厂(02)
    1036 跟奥巴马一起编程 (15 分)
    1034 有理数四则运算 (20 分)
    1033 旧键盘打字 (20 分)
    1031 查验身份证 (15 分)
    大学排名定向爬虫
    1030 完美数列 (25 分)二分
    1029 旧键盘 (20 分)
    1028 人口普查 (20 分)
    1026 程序运行时间 (15 分)四舍五入
  • 原文地址:https://www.cnblogs.com/jamesvoid/p/9778907.html
Copyright © 2011-2022 走看看