Java集合框架概述。
包含:单值操作接口、键值对操作接口、输出接口、比较接口、List接口实现类、Set接口实现类、辅助工具类。
(1)单值操作接口: Collection、 List、 Set
(2)键值对操作接口: Map
(3)输出接口: Iterator、 Listlterator
(4)比较接口: Comparable、 Comparator
(5)List接口实现类: ArrayList和LinkedList
(6)Set接口实现类: HashSet和TreeSet
(7)辅助工具类: Collections类和Arrays类
List接口及其实现类
List接口主要有两个特点:
(1)有序的,这里的有序并不是排好了序,
而是指元素放进去的顺序和取出来的
顺序是一样的。
(2)可重复的,允许有相同的元素存在。
可变数组一ArrayList
ArrayList底层使用数组作为实现结构,但是元素个数不受限制,是
大小可变的数组,在内存中分配连续的空间,遍历元素和随机访问元素的效率比较高,不足之处是任何不在结尾处增加元素或删除元素的操作都会引起大量元素的移位,这种情况下效率不高。
链表一LinkedList
LinkedList底层采用链式存储结构,插入、删除元素时不会引|起大量元素的移动,效率高。它专门 ]提供了对尾部和头部添加和删除的操作方法,而且效率很高。
Set接口
Set接口与List接口相比,其结构特点如下:
(1)无序的,即放进去的顺序和出来的顺序不同。
(2)不可重复的,注重独一无二的性质。
HashSet是根据对象的哈希值来确定元素在集合中的存储位置,因此具有良好的存取和查找性能。
TreeSet则是以二叉树的方式来存储元素,它可以实现对集合中的元素进行排序。
HashSet所存储的元素是不可重复的,并且元素都是无序的。当向HashSet集合中添加一个对象时,首先会调用该对象的
hashCode()方法来计算对象的哈希值,从而确定元素的存储位置,如果此时哈希值相同,再调用对象的equals()方法来确
保该位置没有重复元素。
引用相等性,HashSet认为是重复的元素,但是对象相等性HashSet并不认为是重复的。
HashSet
(1)覆盖从Object继承下来的hashCode()方法。hashCode()方法主要是用来缩小寻找的成本,但hashcode相同并不一定能够保证对象本身是相等的,因为hashCode()方法所使用的杂凑算法可能凑巧使得多个对象传回相同的hashcode,越糟糕的算法,碰撞的几率越大。
(2)在hashcode相同的前提下,还要通过
重写equals()方法来认定是否真正找到了相同
的对象。
TreeSet
TreeSet是Set接口另外一一个实现类,它
和HashSet很相似,也是不可重复的,但是
有一点不同,它会一直保持集合处于有序的
状态。
TreeSet
使用TreeSet必须要知道的事情:集合中的元素必须是实现Comparable接口的类型。或使用带Comparator参数的构造方法来创建TreeSet。
MAP接口及其实现类
Collection接口、List接口、 Set接口
及其实现类一次只能存储一 个值,是单值
集合,而在某些情境下我们需要保存一对
儿值,以key->value的形式保存。例如
Map接口主要特点是:
(1)键(Key)不允许重复
(2)-个键(Key) 只能映射到一个值(Value)
常用子类
1.HashMap
2.HashTable
3.TreeMap
HashMap底层的实现利用了哈希表结构,因而集合中的元素仍然不会按次序排列。
1.存放值
2.取得值
3.删除指定键所对应的值
4.判断是否包含某个键
5.判断是否包含某个值
6.取得键的集合
7.取得值的集合
8.取得键值对的集合
9.取得哈希值
10.判断是否相等
11.清除集合
TreeMap
TreeMap底层采用红黑树结构,而
HashMap使用哈希表结构。