您的位置:首页 > 编程语言 > Java开发

Java核心技术——集合

2015-01-26 10:20 375 查看
一、集合接口

1.集合类型都是泛型类,集合类的基本接口是Collection和Map

2.Collection接口扩展了Iterable接口,对于标准类库中的任何集合都可以使用“for each”循环

3.使用Iterator遍历集合时,调用remove之前必须先调用next

4.AbstractCollection<E>类实现在Collection接口,它将基础方法size和iterator抽象化了,此时,一个具体的集合类可以继承AbstarctCollection类,并提供size和iterator方法

二、具体集合

1.Java中,所有链表实际上都是双向连接的

2.LinkedList类是一个用链表实现的集合类,他实现了List接口

3.ListIterator<E>接口有add方法:在迭代器的位置插入元素。也有previous方法:迭代器后退一步,返回前一个元素

4.可以将Iterator理解为指向集合元素间的空隙,调用一个next就跨过一个元素,相应的操作也是对该元素进行。因此Iterator对象一开始指向的是一个开始的标志位,在执行next方法后才指向第一个元素

5.Vector类的所有方法都是同步的,可以由两个线程安全地访问一个Vector对象,而ArrayList方法不是同步的,效率更高

6.Hashtable的方法是同步的,线程安全的,HashMap是Hashtable的轻量级实现,没有考虑线程安全

7.散列表(Hash Set)将数据分散到几个子表(bucket)中存放,查找元素时可以快速定位元素所在的子表,然后在子表内查找

8.Set和List一样,是另一个继承自Collection的集合接口,Set不包含重复元素,是无序的

9.树集(Tree Set)自动将元素顺序插入,效率比散列表低,比数组和链表高。树集需实现Comparable<T>接口,并实现对“int compareTo”方法的实现,或者将Comparator对象传递给TreeSet构造器

三、集合框架

1.Java的集合分为两类:一是Map,以key/value的方式管理集合,使用key来进行集合元素的管理检索;二是Collection,分为三种:List是一个元素有顺序的列表,Set是元素不能重复的集合,Queue是队列性的集合

2.框架为上层功能的建立定义了一个基础架构,这个基础架构以一组超类或者接口作为载体定义出来,并提供了相应的辅助类、公共类和基础类

3.视图是对原始集合的引用,不是创建新的集合,因此对视图中的集合进行的操作直接反映在原始集合上

4.批操作可以避免频繁地使用迭代器,可以快速地实现两个集合间的交、并、差等操作

5.Array.asList可以将数组装换为集合:HashSet<String> a = new HashSet<String>(Arrays.asList(values));

6.集合转换成数组:String[] values = a.toArray(new String[a.size()]);

四、算法

1.用一个方法计算链表、数组列表或数组中最大元素,此max方法接收任何实现了Collection接口的对象:

public static <T extends Comparable> T max(Collection<T> c){ 用Iterator的next()和T的comparaTo实现 }

2.Collections类中的sort方法可以对实现了List接口的集合进行排序,Collections类的shuffle方法会随机的混排列表中的元素顺序

3.集合类库使用的是归并排序算法,比快速排序慢一些。归并排序有一个优点:稳定,即不需要交换相同的元素
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: