所谓的集合框架,就是Java的设计者把常用的数据结构和算法,抽象出来,定义一系列的接口,供人们去使用,即Java collection frame
集合框架的层次结构如图:
1、关于list 和 set 的比较:set 检索效率比较低,删除和插入的效率比较高,删除和插入时不会导致元素相对位置的变化。
而list 类似的是数据结构中的数组,list 可以动态增长,对于元素的检索比较容易,但是,删除和插入会引起元素位置的变化。
2、set 和 list 的子类比较
2.1 hashset
hashset采用hash算法,以哈希表的方式存储,所以,删除和插入的速度会很快。hashset中,不能存放相同的数据。treeset可以自动维持一定的顺序。
2.2 Vector,ArrayList, LinkedList 比较
ArrayList 对应的是数据结构中的动态数组。 一般开发中经常用到,对数据的遍历。
LinkedList 对应的是 队列,栈,链表。和ArrayList相比,删除和插入比较快,但是,索引比较慢。
Vector 对应的也是动态数组,但是 Vector 是线程安全的,涉及到加锁的问题,所以 相对来说,效率较低。
3、关于Map接口,从图中,也可以看到,Map接口是和coolection接口是平级的, Map 就是一组键值对, 不允许有重复的键出现。
hashTable 是继承自Map接口,和hashMap的区别是:
hashTable 是线程安全的(重量级),不允许空的键值对
hashMap 是非线程安全的(轻量级),允许有空的键值对。
PS:一些线程安全的类: Vector Stack Emuration HashTable
4、关于迭代器以及它的使用
迭代器主要就是帮助我们拿出集合中的值。Iterator
使用:
ArrayList list=new ArrayList();
Iterator it=list.iterator();//得到迭代器对象
while(it.next())
{
//取出迭代器中的值
}