本章先认识,下面会针对每一个不同的集合特性做详细说明。
集合框架概述
java集合框架包含的内容
集合框架是为表示和操作集合而规定的一种统一的标准体系结构。集合框架都包含三大块内容:对外的接口,接口的实现和对集合运算的算法。
Java集合框架中的两大类接口:Collection和Map,其中,Collection又有两个子接口:List 和Set。所以通常说java集合框架供有三大类接口:List,Set和Map。它们的共同点:都是集合接口,都可以用来存储很多对象。它们的区别如下:
Collection接口存储一组不唯一,无序的对象。
Set接口继承Collection接口,存储一组唯一,无序的对象。
List接口继承Collection接口,存储一组不唯一,有序的对象。
Map接口存储一组成对的键-值对象,提供Key到value的映射。Key(键)不要求有序,不允许重复。Value同样不要求有序,但允许重复。
Iterator接口是负责定义访问和遍历元素的接口。
List接口
实现List接口的常用类有ArrayList 和LinkedList。
LinkedList采用链表存储方式,优点在于插入,删除元素时效率比较高。它提供了额外的addFirst(),addLast(),removeFirst()和removeLast()等方法,可以在LinkedList的首部或尾部进行插入或删除操作。
List接口中定义的各种常用方法
Map接口
HashMap集合类
Map接口存储一组成对的键-值对象,提供key到value的映射,Map中的key不要求有序,不允许重复。Value同样不要求有序,但允许重复。最常用的Map实现类是HashMap,它的存储方式是哈希表。哈希表也称为散列表,是根据关键码值(key,value)而直接进行访问的数据结构。
Map常用方法
Hashtable 和 HashMap的异同
两者主要区别如下:
Hashtable继承自Dictionary类,而HashMap实现了Map接口。
Hashtable是线程安全的,HashMap重速度,轻安全,是线程非安全的,所以当运行到多线程环境中时,需要程序员自己管理线程的同步问题。
Hashtable不允许null值(key和value都不允许),HashMap允许null值(key和value都允许)
迭代器Iterator
Iterator为集合而生,专门实现集合的遍历。它隐藏了各种集合实现类内部细节,提供了遍历集合的统一编程接口。
Collection接口的iterate()方法返回一个Iterator,然后通过Iterator接口的两个方法即可方便地实现遍历。
Boolean hasNext():判断是否存在另一个可访问的元素。
Object next() :返回要访问的下一个元素。
Set keys = 集合对象.keySet(); //取出所有key的集合
Iterator it = keys.iterator() ; //获取Iterator对象
While(it.hasNext()){
String key =(String)it.next(); //取出key
}
使用foreach语句遍历
Set keys =dogMap.keySet(); //取出所有key的集合
For(Object key : keys){
Dog dog = (Dog)dogMap.get(key); //根据key取出对应的值
}
Map.Entry遍历