Collection集合(简单理解)
Collection接口 :
是单列集合最顶层的接口。
定义了所有单列集合中的共性方法,但是里面没有带索引(下标)的方法。
List 接口 继承(extends) Collection 接口
1、是有序集合(存储和取出的元素相同)。
2、允许存储重复元素。
3、有索引,可以进行循环遍历。
-
ArrayList :底层是数组实现的,查询快,增删慢。线性不安全的。
-
LinkedList :底层是链表实现的,查询慢,增删快。线性不安全的。
-
Vector: 底层也是数组实现的,线性安全的。
Set 接口 继承(extends) Collection 接口
1、不能存储重复元素。
2、没有索引,(不能使用普通的for循环遍历)
-
HashSet :底层是哈希表+红黑树实现的,无索引,不可以存储重复元素,存取无序。
-
LinkedHashSet:底层是哈希表+链表实现的,无索引,不可存储重复元素,但可以保证存取顺序。
-
TreeSet :底层是二叉树实现的。
上面提到了数组、哈希表、链表、红黑树、二叉树。此时就需要简单知道一下数据结构的概念了。
常见的数据结构:栈、队列、数组、链表、红黑树、二叉树。 -
栈 :先进后出
-
队列:先进先出
-
数组:查询快(数组的地址是连续的,可以根据索引快速找到某一个元素),增删慢(数组的长度是固定的,删除或增加必须是先创建一个数组,再把源数组的数据复制过来。)。
-
链表:查询慢(链表中的地址是不连续的,每次进行查询时都是从开头进行查询。),增删快(链表结构的增加和删除对链表的整体结构没有影响,所以增删快)。
链表分为:单向链表(不保证元素的循序);双向链表(链表中有两条数据,其中一条记录元素的顺序) -
二叉树:分支不能超过两个。
-
排序树:在二叉树的基础上,元素是有大小顺序的,左叶子树小,右叶子树大。 平衡树:左叶子和右叶子数量相等。 红黑树:趋近于平衡树,查询的叶子节点最大次数和最小次数不能超过2倍。比如:最小次数是1,那么最大次数不能大于2。 红黑树的特征: 1、节点是红和黑两色。 2、根节点必须是黑色的,红色节点的子节点都是黑节点。 3、任何一个节点到每个节点的所有路径上的黑色节点数相同。