JAVA的集合框架(Java Collection Framework)是JAVA的基础知识,在我们的开发过程中几乎是时时刻刻都要用到的东西。但是因为其中的接口和类很多,我们未必会对其完全熟悉。这里,我就做个简单的归纳和介绍。
先来看一张图:
从上我们可以看出,最顶端其实就是4个接口:Collection,List,Set,和Map。 其中List和Set是继承自Collection,而Map则自成一脉。这些接口都是在java.util路径下的,都属于java的基础类库rt.jar。
这里我们需要说明一下的是,java.util.Collections,是不属于java的集合框架的。它是一个集合的工具类。比如我们常用它的排序方法:Collections.sort(List), Collections.sort(List, Comparator)。
回到正题。上图中那么多的接口和类,各自的特性是什么呢?这是我们这篇文章关注的重点。我们可以知道,在这个图中,越是下面的子类,特性也就越丰富。而顶层的接口和类,也就越简单。我们在刚接触java的时候,用的最多的可能就是ArrayList和HashMap。我们常用的写法会是这样:
- List<T>pList=newArrayList<T>();
- Map<K,V>pMap=newHashMap<K,V>();
List<T> pList = new ArrayList<T>(); Map<K, V> pMap = new HashMap<K, V>();
List和Map最简单的区别就是:Map存放的是键值对,方便查找。
下面我们来看一张比较简单的表格,以区分各个类的差别:
|
是否有序
|
是否允许重复
|
是否线程同步
|
Collection
|
否
|
是
|
|
List
|
ArrayList
|
是
|
是
|
否
|
Vector
|
是
|
LinkedList
|
否
|
Set
|
HashSet
|
否
|
否
|
否
|
TreeSet
|
是
|
否
|
Map
|
HashMap
|
否
|
<key, value>,
key不允许重复
|
否
|
TreeMap
|
是
|
否
|
Hashtable
|
否
|
是
|
可以知道,List是有序集合,而Set和Map则不一定。以Tree开头的都是有序的。而以Hash开头的,是用hash实现的,性能上比用二叉树实现的Tree**要好。
关于同步问题,一般而言,非同步的类,性能比同步的要好。我们建议用Collections.synchronizedCollection(Collection<T> c)方法去处理原本非同步的类,在不丢失性能的前提下,实现同步。Java1.5提供了ConcurrentHashMap,适用于高并发的线程安全实现。
分享到:
相关推荐
本书介绍了collect的前世今生,是初学者的一本较好的教程。
Java Collection Framework – Java Lecture 23
Data Structures and the Java Collections Framework, 3rd Edition
Java6 Collection Framework 新特性概览.pdf Java6 Collection Framework 新特性概览.pdf
HDT-6 使用Java Collection Framework的第6号工作表
所有抽象出来的数据结构和操作(算法)统称为Java集合框架(Java Collection Framework)。 Java程序员在具体应用时,不必考虑数据结构和算法实现细节,只需要用这些类创建出来一些对象,然后直接应用就可以了。这样...
2. Collections Framework 3 3. Collection interfaces and classes 5 4. Special collection implementations 22 5. Historical collection classes 25 6. Algorithm support 28 7. Usage issues 32 8. Alternative...
Java collection framework example
Java Collection Framework – Java Lecture 21
HashMap和HashSet是Java Collection Framework的两个重要成员,其中HashMap是Map接口的常用实现类,HashSet是Set接口的常用实现类。虽然HashMap和HashSet实现的接口规范不同,但它们底层的Hash存储机制完全一样,...
JavaEE在线课程 单元01-收藏框架 JavaEE在线课程->单元01-Collections ... 这些类代表在Dimik Computing进行的在线课程中演示的Java Collection Framework的用法。 随意分叉并自己尝试。 @作者Sharif Ahmed( )
java.util包中定义了各种用于集合操作的类和接口,这些类和接口构成了Java语言的集合框架(Collection Framework)。 Java集合中可以放对象,不能存放基础数据类型数。 Collection Framework 根据不同类型的集合的特点...
Collection Framework, Java 8 streams Day 3, Day 4 and Day 5: Web application, Spring, RESTful web services using Spring Boot and ORM [ Hibernate] ================================================== ===...
java_collections_framework(Java Collection Framework源码分析) │ │── sword_finger_offer(剑指Offer练习记录) │ │── beauty_of_algorithms(极客时间-数据结构与算法之美练习记录) │ │── leetcode...
Collection Framework 教授的。 尽管到目前为止的课程只关注 C++,但这为学生提供了一个新的机会来更好地理解一种新的流行语言以及学习计算机科学的基本概念。 任务 任务是采用基本的二叉树实现并将其扩展为更有效和...
集合Java源码jcf阅读 Java Collection Framework源代码阅读。 分析设计与实施
介绍JAVA中的Collection FrameWork(包括如何写自己的数据结构)? 如COLLECTION中遗留类(HASHTABLE、VECTOR)和现有类的区别?(同步) 3.Java中异常处理机制,事件机制? 4.EJB与JAVA BEAN的区别? EJB与JAVA BEAN...
JavaCollectionsTutorial 的Java Collections Framework Tutorial的源代码。
Collection Framework Chapter 6. Generic Programming Chapter 7. Reflection Chapter 8. Java Native Interface Chapter 9. AWT and Swing Chapter 10. Java and XML Chapter 11. Input/Output PART II: NETWORK...
所有Java Collections Framework类都实现Collection接口。 清单 列表实现List接口: ArrayList Vector LinkedList (该列表也实现了Queue和Deque接口) ArrayList和LinkedList基本经验法则: ArrayList就像一...