Java 基本集合类学习

作者: young_dreamer | 来源:发表于2018-07-27 00:03 被阅读31次

本文都是自己对集合的大致理解,有不够严谨的地方请忽略,有错误描述的地方,欢迎指正。

集合主要用到的就是两个接口:Collection 和 Map 

一张简化版的图理清思路

Map存键值对的数据,Collection存单纯的对象。 注意:HashTable属于Dictionary,不在讨论范围(提一嘴,它是线程安全的,key与value均不能有null值)。

Collection

List:可以有序排列,随机访问用ArrayList,删除插入用LinkedList,做遍历删除List中元素强烈建议不在for中操作,会报异常ConcurrentModificationException

Set: 无序,唯一的存储对象。 TreeSet 字典序存对象,字典序输出。 LinkedHashSet 根据插入顺序,排列对象(与Map中TreeMap,LinkedHashMap原理相似)。亲测代码如下:

简单LinkedHashSet  与 TreeSet 测试对比代码 结果截图

可以看出TreeSet遵守的是String字面量的值对比,用的是内置的Comparator。 LinkedHashSet遵守插入顺序。

Map

HashMap:无序,key可以有一个为null,value可以多个为null。LinkedHashMap 类似LinkedHashSet原理

TreeMap:核心是有序!改变comparator就可以改排序方式。原理实现运用到了红黑树保持平衡与效率——拓展知识点“红黑树”介绍(2018/07/26)

红黑树:原理就是BST,二叉平衡查找树。规则限制较多,难点在于何时变色(黑红变化),何时旋转。

    重点原则:1、根一定为黑色

                      2、从根到每个叶子的路径节点上黑色节点个数总量一致

                      3、左右子树高度平衡,不超过对方的一倍

                      4、红色的父子节点都不能为红色

笔者认为变色比旋转更难判断。参考讲解链接:https://www.sohu.com/a/201923614_466939。该链接其实也没讲清楚什么情况下变色。待深入研究,此处仅说明TreeSet,TreeMap的内部实现用到的核心技术,同时Java8的HashMap的Entry表中单个Entry长度超过8个,就重构成红黑树存储hash碰撞的数据。

相关文章

  • 芯灵思SinlinxA33开发板安卓开发-java语言基础(9)

    java中的集合类: Java集合类提供了一套设计良好的支持对一组对象进行操作的接口和类。Java集合类里面最基本...

  • Java 基本集合类学习

    本文都是自己对集合的大致理解,有不够严谨的地方请忽略,有错误描述的地方,欢迎指正。 集合主要用到的就是两个接口:C...

  • 详解Java中Map集合类 HashMap、Hashtable、

    学习Java中Map集合类时,强烈建议和Java中set一起 一、Map的基本介绍及其实现类 Java.util....

  • Java基础19:Java集合框架梳理

    本文介绍了Java集合类的基本框架,接口结构以及部分源码分析,并且通过自己实现一些集合类来更好地剖析Java集合类...

  • Java常用集合类功能、区别和性能

    面试时时被集合类各种虐,现在就来总结一下Java的集合类及其区别。 Java集合框架的基本接口、类层级结果如下:j...

  • Java集合类详解

    Java集合类中Collection是最基本的集合接口,一个Collection代表一组Object。Java ...

  • Java并发包之ConcurrentHashMap

    之前整理了一份Java中常用的集合类的基本特性:Java常用集合类图解详细介绍了HashMap:HashMap之浅...

  • Java集合类

    集合类就是一种变长数组。Java集合类中不能存放基本数据类型,而只能存放对象。Java集合类主要是由两个接口派生而...

  • Java集合源码浅析

    简介 Java集合类是Java将一些基本的和使用频率极高的基础类进行封装和增强后再以一个类的形式提供。集合类是可以...

  • 集合1

    Java集合类提供了一套设计良好的支持对一组对象进行操作的接口和类。 1、Java集合类里面最基本的接口? Col...

网友评论

    本文标题:Java 基本集合类学习

    本文链接:https://www.haomeiwen.com/subject/sgiimftx.html