读书人

java聚合框架

发布时间: 2012-08-24 10:00:20 作者: rapoo

java集合框架

1、java集合架构支持3种类型的集合:规则集(Set),线性表(List),和图(Map),分别定义在Set,List,Map中。Set实例存储一组互不相同的元素(集合),List实例存储一组顺序排列的元素(表),Map存储一组 对象---关键值的映射
总的架构如下,非常重要,包含继承关系,实现的分类,一目了然:
Collection接口: 
       Set接口:
            HashSet具体类
            LinkedHashSet具体类
            TreeSet具体类
       List接口: 
            ArrayList具体类
            LinkedList具体类
            向量类Vector具体类
            Stack具体类
Map接口:
       HashMap类
       LinkedHashMap类
       TreeMap类 
  
2、集合Collection接口

--Collection 是任何对象组,元素各自独立,通常拥有相同的套用规则。Set List由它派生。

Collection 和 Collections的区别。

Collections是个java.util下的类,它包含有各种有关集合操作的静态方法。

Collection是个java.util下的接口,它是各种集合结构的父接口


基本操作 增加元素add(Object obj); addAll(Collection c);

删除元素 remove(Object obj); removeAll(Collection c);

求交集 retainAll(Collection c);

删除元素 remove(Object obj); removeAll(Collection c);

求交集 retainAll(Collection c);

访问/遍历集合元素的好办法是使用Iterator接口(迭代器用于取代Enumeration)

3、Set接口

Set:不允许重复,无序,允许1个null值。
实现类:HashSet-基于散列表的集,加进散列表的元素要实现hashCode()方法

LinkedHashSet-对集迭代时,按增加顺序返回元素

TreeSet-基于(平衡)树的数据结构

注:LinkedHashSet只是按照添加的的先后顺序在存储时保持顺序,要给集合元素添加顺序属性,需要使用TreeSet(集合元素有排序关系)。

TreeSet实现排序的2种方式:

》1.通过TreeSet(Comparator<? super E> comparator) 构造方法指定TreeSet的比较
(1).构造装入TreeSet的java bean

例如:



(2).自己实现比较器

例如:



(2).创建TreeSet时直接使用构造TreeSet()方法


6、迭代器Iterator快速失败机制
Iterator是获取集合中元素的过程,实际上帮助获取集合中的元素。
快速失败:报出的异常为 java.util.ConcurrentModificationException 异常
当方法检测到对象的并发修改,但不允许这种修改时,抛出此异常。

当使用 fail-fast iterator 对 Collection 或 Map 进行迭代操作过程中尝试直接修改 Collection / Map 的内容时,即使是在单线程下运行, java.util.ConcurrentModificationException 异常也将被抛出。
  Iterator 是工作在一个独立的线程中,并且拥有一个 mutex 锁。 Iterator 被创建之后会建立一个指向原来对象的单链索引表,当原来的对象数量发生变化时,这个索引表的内容不会同步改变,所以当索引指针往后移动的时候就找不到要迭代的对象,所以按照 fail-fast 原则 Iterator 会马上抛出 java.util.ConcurrentModificationException 异常。
  所以 Iterator 在工作的时候是不允许被迭代的对象被改变的。但你可以使用 Iterator 本身的方法 remove() 来删除对象, Iterator.remove() 方法会在删除当前迭代对象的同时维护索引的一致性。

读书人网 >编程

热点推荐