关于集合框架

集合框架包括集合、映射、迭代器、数组以及一些遗留类(Vector、Stack、HashTable、Properties)和接口Dictionary,
所有的遗留接口都是同步的也就是线程安全的,所有的集合类都是不同步的。

1、集合类
  Collection是所有集合的顶层接口,List接口和Set接口继承自Collection。
  Map接口不继承自Collection,但是通过values()方法可以得到Collection对象。
  Collection可以通过toArray()转化为数组。
  Collection可以通过iterator()返回一个指向该集合的迭代器。
  
  List把集合的行为生命成存储一个序列,使用从0开始的索引,可以把一个元素插入到列表里或访问列表中的某个元素,允许值的重复。
  Set不允许值的重复。
  
  AbstractCollection提供了Collection的基本实现。
  
  AbstractList继承自AbstractCollection,实现List接口,并提供基本的List的实现。
  AbstractSet继承自AbstractCollection,实现Set接口,并提供基本的Set的实现。
  
  AbstractSequentialList扩展AbstractList来实现集合元素的顺序访问。
  
  ArrayList继承自AbstractList,实现List接口,支持按需要增长的动态数组,可以用一个初始长度来创建,在长度超过时自动变大,在删除时自动变小。但是再分配是很耗时的系统操作,可以通过ensureCapacity(int capacity)手工变大数组容量,来改善,其中capacity是要再分配的容量。
  LinkedList继承自AbstractSequentialList,实现链表。
  HashSet继承自AbstractSet,创建一个用散列表存储元素的集合,可以保证不管集合多大,基本操作(add、remove、size)等的执行时间不变。
  TreeSet扩展AbstractSet,实现树型的有序集合;集合中的元素按升序存储;访问和便利的速度很快,一般用来存储大量有序数据并快速查找。
  
  LinkedHashSet继承自HashSet,是一个用元素的插入顺序来维持集合的链表,并允许按照元素的插入顺序遍历集合;在使用迭代器访问LinkedHashSet集合时,元素将按照他们的插入顺序返回。

2、映射
  映射是存储关键字-值对的对象,可以通过给定的关键字查到到他对应的值;其中关键字和值都可以是对象;关键字必须是唯一的,但是值是可以重复的;映射不是集合,不实现Collection接口;但是可以通过KeySet()方法得到关键字的集合,或通过values()得到值的集合。
  Map接口是所有映射的顶层接口。
  
  SortedMap接口扩展Map接口,保证按关键字的升序存储值对;
  
  AbstractMap提供基本的Map的实现,是所有映射实现的父类。
  
  HashMap使用散列表来实现Map接口,可以保证不管集合多大,基本操作(get、put)等的执行时间不变;但是不能保证元素的顺序;容量可以动态地增长,增长率可以通过构造方法HashMap(int capacity, float fillRatio)来设定,其中fillRatio就是增长率。
  TreeMap提供了按序存储值对的方式,并且允许快速查找,并能保证集合元素按照关键字的升序排列。
  
  LinkedHashMap扩展HashMap,按照元素的插入顺序维护映射中的元素链表,循环访问时,元素将按照他们的插入顺序返回。

3、数组
  Arrays提供了许多数组处理方法,可以用来连接集合和数组。
  asList()返回一个由操作数组支持的列表,列表和数组指向同一个地方。
  sort()对一个数组进行排序,使该数组最后按升序排列。
4、遗留类
  Vector是同步的,可以动态增长,可以通过vector(int size, int incr)指定增量(incr),如果没有指定增量,在每次分配内存时将加倍;Java2的Vector实现了List接口,并提供了对迭代器的支持,可以向使用list一样使用Vector。
  
  Stack继承自Vector,使先进后出的堆栈。
  
  Dictionary是一个关键字-值对存储的抽象类,操作与映射类似,但是现在这个类已经被映射取代。
  
  HashTable是Dictionary的子类,但是在Java2中改进,并实现Map接口,与HashMap类似,区别在于HashTable是同步的,HashMap是不同步的;容量也可以自动增长,通过HashTable(int size, float fillRatio)指定填充率,如果没有指定,填充率默认为0.75。
  
  Properties是HashTable的子类。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值