JVAV集合框架

来源:互联网 发布:淘宝网密码登录不了 编辑:程序博客网 时间:2024/06/16 16:56

Collection是JAVA的一个集合框架总称。主要包含List、Set两类,同时还有常用的Map类。如下图所示:
这里写图片描述
Collection与Map最大的区别是:Collection存储的是对象,而Map存储的是key-value数据。
下面主要介绍常用类:ArrayList、LinkedList、Vector、HashMap、Hashtable、HashSet、TreeSet.

ArrayList与LinkedList、Vector

1.ArrayList是基于数组,线程不安全,查找元素效率高,初始容量为10,扩容规则:(原容量*3/2)+1
2.LinkedList是基于链表的,增删元素效率高,初始容量为0,扩容是只需要创建节点移动指针
3.Vector同ArrayList一样,是基于数组的,但Vector是线程安全的

HashMap与Hashtable

1.HashMap是线程不安全不同步的,Hashtable是线程安全同步的
2.HashMap允许存在null键与null值,Hashtable不允许
3.由于HashMap是线程不安全的,所以当多个线程同时对map结构进行改变(增删)的时候,会抛出ConcurrentModificationException异常
4.HashMap的初始容量为16,扩容规则:原容量*2,Hashtable的初始容量是11,扩容规则为原容量*2+1

HashMap与HashSet的区别

1.HashMap实现了Map接口,HashSet实现了Set接口
2.HashMap是key-value形式键值对,HashSet存储一个对象
3.HashMap不允许存在重复键,HashSet不允许存在重复值
4.HashSet是基于HashMap的,集合内部无序

HashSet与TreeSet的区别

1.HashSet底层使用hash表,基于HashMap,集合内部元素无序,add/remove操作时间复杂度为O(1)
2.TreeSet底层使用红黑树,基于TreeMap,集合内部元素有序,add/remove操作时间复杂度为O(lgn)

红黑树

红黑树是一棵相对平衡的二叉查找树,即任意一个节点的值大于他左孩子节点的值并且小宇他右孩子节点的值,包括6个节点:key、value、color、left、right、parent。
性质:
1.节点的颜色只能为红色或者黑色
2.根节点是黑色的,每个叶节点(NIL)也是黑色的
3.一条路径那个上不能出现相邻的两个红节点,即红节点的叶节点必是黑色的
4.从任意节点到其叶节点所有路径都包含相同数目的黑色节点

二叉排序树(二叉搜索树(B树))

1.非叶子节点最多拥有两个孩子节点
2.所有节点存储一个关键字
3.任意一个节点的值大于左孩子节点的值且小于右孩子节点的值

平衡二叉树

任意两个子树的高度差不大于1,查找、插入、删除在平均与最坏情况下都是O(lgn).

B-树(多路搜索树)

1.具有n个关键字的节点含有n+1个分支
2.所有关键字都在整棵树中出现

B+树(多路搜索树)

1.具有n个关键字的节点含有n个分支
2.所有关键字都在叶子节点中出现
3.所有叶子节点都有一个指针链

原创粉丝点击