Java_集合类基础

来源:互联网 发布:中国经纪人网络登录 编辑:程序博客网 时间:2024/05/16 10:08

What:

JDK1.2+的集合类框架提供了一套设计优良的接口和实现类,使得程序员操作成批的数据结构或者对象元素极为方便。

JCF(Java Collection Framework)是Java中为了表示和操作集合而规定的一种统一的标准的体系结构。主要包含三大块内容:对外的接口,接口的实现,对集合的操作。


Why:

集合框架提供了有用的数据结构和算法,使得我们集中精力于程序的业务逻辑上,而不是为了让程序能运转而将注意力集中在底层设计上。
集合框架设计得性能高效;
集合框架允许不同的集合类型以相似的方式工作,提供高度的互操作性,减少学习和使用新的API的辛劳。
集合框架鼓励软件复用,对于遵照标准集合框架接口的新的数据结构天生是可复用的,同样对于操作一个实现了这些接口的对象的算法也是如此。


How:

1、我们在看怎么使用集合类框架之前,先看一下集合类的层次结构:


*图片引用自: http://beginnersbook.com/java-collections-tutorials/


结合上图,我们平时开发中,常用的数据结构是: Array, List(Vector, ArrayList, LinkedList), Set(HashSet, TreeSet, LinkedHashSet), Map(HashMap, TreeMap, LinkedHashMap)。

2、对于这些数据结构,集合类框架提供了基本的增删改查的操作。一些具体的集合类,如Queue,会有一些针对自身数据结构的操作,比如:offer(), peek(), poll()。

这篇博文: Java基础---集合之常用集合类的区别和联系、collections、泛型 也总结了对集合类的使用,我觉得作者总结的实现类的区别的图标非常棒,引用来加深理解:



从上图可以看到:

(1) List允许元素重复;Set不允许元素重复;Map不允许Key重复;

(2) List元素是插入顺序;基于Hash的集合类是无序的;基于Tree(实际是red-black tree)的集合类是内部有序的;LinkedHashMap和LinkedHashSet通过链表维持了元素插入的顺序;

(3) List中的元素,需要重写equals()方法,如果使用到Collections.sort()方法,还需要实现Comparable接口的compareTo方法或者实现Comparator类;基于Hash的集合类,其Key需要重写equals()和hashCode()方法;基于Tree的集合类,其元素需要重写equals()和Comparable接口的compareTo方法或者实现Comparator类;


3、如果考虑到线程安全,有两种常用的方案:

(1) 使用Collections.synchronizedXXX对List, Set, Map的操作进行synchronized化;

(2) 使用java.util.concurrent类提供的并发工具类,如ConcurrentHashMap, CopyOnWriteArrayList, CopyOnWriteArraySet, ArrayBlockingQueue, LinkedBlockingQueue等并发类容器;


4、Arrays和Collections类都是操作集合类的工具类,提供了静态方法,非常有用,但是也要查看javadoc的使用提示,避免理解不深入而掉坑中!


【参考文章】

1. beginnersbook

2. Java基础---集合之常用集合类的区别和联系、collections、泛型

0 0
原创粉丝点击