Set是一个集合接口,它的特征和数学上的集合有点类似,
n Set中不允许存放重复元素
n Set中的元素是无序的
n Set主要有HashSet、LinkedHashSet和TreeSet三个实现类
HashSet按照特定的Hash算法存取对象,效率较高,存取对象的速度较快。(注意:HashSet中对数据的组织并不是无序的,而是按照Hash算法进行排序)
LinkedHashSet是HashSet的子类,它使用链表数据结构进行数据存取
LinkedHashSet具有以下特征:
n LinkedHashSet内部使用了链表数据结构
n LinkedHashSet与HashSet不同之处在于:LinkedHashSet中的元素具有固定的顺序(按照添加顺序组织元素)
TreeSet是一个具有排序功能的集合,特征如下:
n 添加的元素必须是同一数据类型
n 对元素的组织形式默认升序
如果想对加入的自定义类对象进行排序,则自定义类必须实现Comparable接口,并重写compareTo()方法,这样TreeSet才能对加入的对象进行排序。
List是一个集合接口,它继承自Collection接口,
n List中可以存放重复元素
n List中的元素是一个有序的集合,可以通过索引访问List中的元素
n List主要有ArrayList和LinkedList两个实现类
ArrayList是一个大小可变的数组,它具有快速读取对象的特性,但是如果删除或者插入对象则效率较低,因为每次在位置i上插入一个对象时,从位置i+1到最后的对象都要后移一位;而每次删除位置i上的一个对象,从位置i+1到最后的对象则都要前移一个位置。
LinkedList在内部使用链表的形式存储数据,因此在删除和插入对象时会有较高的效率。
Map是Java中的一个接口,它是一种重要的集合,它使用key/value的方式存储数据。key/value方式使用value存储内容,利用key作为关键字存取集合中的内容。key和value是一一对应的关系,key值不能重复。Map集合的特性如下:
n Map具有较高的存取性能
n Map不允许存放重复的key值,但是可以有重复的value值
n Map主要有HashMap、LinkedHashMap、TreeMap三个实现类
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中的对象是无序的
LinkedHashMap使用链表结构存储数据,LinkedHashMap的声明如下:
LinkedHashMap具有下面的特性:
n LinkedHashMap不允许有重复的key值
n LinkedHashMap内的对象有固定的顺序
TreeMap具有比LinkedHashMap更加强大的排序功能,TreeMap实现了SortedMap接口。主要特征如下:
n 具有排序功能
n 自定义排序实现排序功能