集合理解

简介: 集合的个人理解笔记 与二叉查找树规律

单列集合 不去重的情况下

ArrayList 基于数组的 查询多

LinkedList 基于双向链表的 增删多

去重的情况下

哈希表的组成 JDK8之前数组链表 JDK8以后 数组链表红黑树

HashSet 基于哈希表 但是无序 源代码是new了个 HashMap

LinkedHashSet 基于哈希表跟双链表 有序

如果想对集合的元素排序

TreeSet 基于红黑树 特殊的二叉查找树

Compareable一般是写在实体类

Comparator一般是写在测试类

源代码是new了个 TreeMap

如果存入自定义类型对象 唯一性同样需要重写 hashCode和equals()

在重写equals()后,一定要重写hashCode()方法
equals相等,hashcode相等
hashcode相等,equals不一定相等

自然排序要求元素必须实现Compareable接口,并重写里面的compareTo()方法,

如果实现接口的方法不足以满足要求

比较器排需要在TreeSet初始化是时候传入一个实现Comparator接口的比较器对象,或者采用匿名内部类的方式new一个Comparator对象,重写里面的compare()方法

比如我们想要从大到小 这个时候实现接口是满足不了我们的需求的 就要采用第二种方法

双列集合 map接口

TreeMap

LinkedHashMap

HashMap 在底层是通过hashCode方法去确定key是否重复 跟value没有关系

类似与Set接口的三个实现类

hashCode作用 用来确定元素在集合中存放的索引

如果通过hashCode判断相同会再次通过equals去再次判断是否为同对象,如果是的话会覆盖;

在HashSet中 hashCode作用 就是集合中的值

在HashMap中他是Key

二叉查找树规律

左左右旋一次

左右 先左后右

右右左旋一次

右左 先右后左

相关文章
|
4月前
|
存储 算法 C++
C++中集合的使用
C++中集合的使用
|
存储 Java 索引
1.9 集合
1.9 集合
39 1
|
设计模式 安全
集合
集合
71 0
16 集合(下)
16 集合(下)
104 0
|
存储 JavaScript 前端开发
集合的实现
集合的实现
集合的实现
|
存储 安全 索引
集合 详解
集合 详解
134 0
|
存储 Java 容器
|
存储 算法 安全
集合总结
集合总结
96 0
|
存储 安全 Java
第9章 集合
集合体系、集合的数据结构以及操作。
112 0