【转】Java集合


1. Set
Set是一个集合接口,它的特征和数学上的集合有点类似,Set中存放的是对象的引用,继承自Collection接口,它具有如下的特征:
n          Set中不允许存放重复元素
n          Set中的元素是无序的
n          Set主要有HashSet、LinkedHashSet和TreeSet三个实现类

1.1 HashSet
HashSet按照特定的Hash算法存取对象,效率较高,存取对象的速度较快。(注意:HashSet中对数据的组织并不是无序的,而是按照Hash算法进行排序)
1.2 LinkedHashSet
LinkedHashSet是HashSet的子类,它使用链表数据结构进行数据存取
LinkedHashSet具有以下特征:
n          LinkedHashSet内部使用了链表数据结构
n          LinkedHashSet与HashSet不同之处在于:LinkedHashSet中的元素具有固定的顺序(按照添加顺序组织元素)
1.3 TreeSet
TreeSet是一个具有排序功能的集合,特征如下:
n          添加的元素必须是同一数据类型
n          对元素的组织形式默认升序
如果想对加入的自定义类对象进行排序,则自定义类必须实现Comparable接口,并重写compareTo()方法,这样TreeSet才能对加入的对象进行排序。

2. List
List是一个集合接口,它继承自Collection接口,List中存放的是对象的引用。List接口具有如下特征:
n          List中可以存放重复元素
n          List中的元素是一个有序的集合,可以通过索引访问List中的元素
n          List主要有ArrayList和LinkedList两个实现类
2.1 ArrayList
ArrayList是一个大小可变的数组,它具有快速读取对象的特性,但是如果删除或者插入对象则效率较低,因为每次在位置i上插入一个对象时,从位置i+1到最后的对象都要后移一位;而每次删除位置i上的一个对象,从位置i+1到最后的对象则都要前移一个位置。
2.2 LinkedList
LinkedList在内部使用链表的形式存储数据,因此在删除和插入对象时会有较高的效率。如果经常需要在List中插入和删除数据,建议使用LinkedList;如果List中的对象变更很少,建议使用ArrayList

3.Map
Map是Java中的一个接口,它是一种重要的集合,它使用key/value的方式存储数据。key/value方式使用value存储内容,利用key作为关键字存取集合中的内容。key和value是一一对应的关系,key值不能重复。Map集合的特性如下:
n          Map具有较高的存取性能
n          Map不允许存放重复的key值,但是可以有重复的value值
n          Map主要有HashMap、LinkedHashMap、TreeMap三个实现类
3.1 HashMap
HashMap的特性如下:
n          HashMap在声明时可以传递参数初始化构造时的大小,如果HashMap中的内容达到了一定的大小,就会自动增长为原来的两倍
构造函数如下:HashMap(int 初始化大小)
n          装填因子用来决定向HashMap中装填时的上限,填充因子取值为0到1之间,如果填充因子取值为0.8,HashMap的初始容量为100,则当HashMap中的对象超过100*0.8时,容量会扩展为原来的两倍。
构造函数如下:HashMap(int 初始化大小,float 填充因子)
n          HashMap通过HashCode进行内容的快速查找
n          HashMap中的对象是无序的
3.2 LinkedHashMap
LinkedHashMap使用链表结构存储数据,LinkedHashMap的声明如下:
LinkedHashMap具有下面的特性:
n          LinkedHashMap不允许有重复的key值
n          LinkedHashMap内的对象有固定的顺序
3.3 TreeMap
TreeMap具有比LinkedHashMap更加强大的排序功能,TreeMap实现了SortedMap接口。主要特征如下:
n          具有排序功能
n          自定义排序实现排序功能

原文地址:https://www.cnblogs.com/liaobin/p/1756386.html