Java_集合类基础
2017-03-05 20:52
274 查看
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、泛型
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、泛型
相关文章推荐
- Java基础14:集合类;list集合;迭代器;set集合;
- JAVA基础——API(集合类)
- java 基础类库(IO,集合类,线程)
- Java集合类框架学习 1 —— 概述与基础
- java基础集合类之set
- java基础--API1(集合类)
- java基础3-集合类接口
- Java基础知识笔记(八:集合类)
- java基础之集合类
- java基础之集合类
- 黑马程序员—13—java基础:有关集合类的学习笔记和心得体会
- Java基础之集合类
- java基础知识回顾之java集合类-Properties集合
- Java并发基础(七)-原子类和并发集合类
- Java基础之集合类常见试题
- Java基础知识整理(六)- 集合类笔试题
- 黑马程序员--JAVA基础之集合类
- 黑马程序员——Java基础——集合类_2
- Java基础06集合类
- 【JAVA基础】集合类源码分析_ArrayList