1.集合类类图
Collection
├List
│├LinkedList
│├ArrayList
│└Vector
│ └Stack
└Set
├HashSet
├TreeSet
├LinkedHashSet
Map
├Hashtable
├HashMap
├WeakHashMap
└SortedMap
└TreeMap
2.分类介绍
Collection是最基本的集合接口,JDK提供的类都继承自Collection的“子接口”,如List和Set。所有实现Collection接口的类都必须提供两个标准的构造函数:无参数的构造函数和有一个Collection参数的构造函数。前者用于创建一个空的Collection,后者用于创建一个新的Collection,允许用户复制一个Collection。不论Collection的实际类型如何,它都支持一个iterator()的方法,该方法返回一个迭代子,可逐一访问Collection中每一个元素。用法如下:
Iterator it = collection.iterator(); // 获得一个迭代子 while(it.hasNext()) { Object obj = it.next(); // 得到下一个元素 }
由Collection接口派生的两个接口是List和Set。
1)Collection和Map区别:
- Collection类型,每个位置只有一个元素。
- Map类型,持有key-value形式的数据——“键值对”,即其元素是成对的对象。
2)Collection子接口List和Set区别:
- List是有序的Collection,确保维护元素特定的顺序,这类似于Java的数组。
- Set接口不保证维护元素的次序,存入Set的每个元素必须是唯一的。加入Set的Object必须定义equals()方法以确保对象的唯一性。
3)List实现类ArrayList、LinkedList和Vector区别
- ArrayList实现了可变大小的数组,允许对元素进行快速随机访问,但是向List中间插入与移除元素的速度很慢(类似动态数组)。它允许所有元素,包括null。ArrayList没有同步。如果数组长度一定,用数组效率更高。
- LinkedList插入与删除元素开销不大,随机访问相比则相对较慢(类似链表)。可当堆栈、队列和双向队列使用。
- Vector是同步的。当一个Iterator被创建而且正在被使用,另一个线程改变了Vector的状态,这时将抛出ConcurrentModificationException异常,因此必须捕获该异常。比ArrayList慢。
- Stack继承自Vector,实现一个后进先出的堆栈。同步的。
4)Set实现类HashSet和TreeSet区别
- HashSet为快速查找而设计的Set(采用散列函数)。存入HashSet的对象必须定义hashCode()。 它不保证集合的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null元素。此实现不是同步的。
- TreeSet保持次序的Set,底层为红黑树。使用它可以从Set中提取有序的序列。
- LinkedHashSet: 具有HashSet的查询速度,且内部使用链表维护元素的顺序(哈希函数+链表)。于是在使用迭代器遍历Set时,结果会按元素插入的次序显示。
5)Map实现类Hashtable、HashMap和WeakHashMap
- Hashtable是同步的,不允许null。继承于陈旧的Dictionary类的。
- HashMap是非同步的,速度比Hashtable快。允许null。HashMap继承于AbstractMap类。内部Hash数组等于Hashtable不同。Map 中插入、删除和定位元素,HashMap 是最好的选择。
- WeakHashMap是一种改进的HashMap,若一个key不再被外部所引用,那么该key可以被GC回收。
- TreeMap中所有元素都保持固定的顺序,如果需有序的结果你就应该使用TreeMap(HashMap中元素的排列顺序是不固定的)。
3 总结
- 容器对象仅能持有对象引用(对象的指针),而不是将对象信息Copy一根至数列末位置。
- 在多线程环境下,对于非同步的结合和Map,可以用类似List list = Collections.synchronizedList(new LinkedList(...));或 Collections.synchronizedMap(originMap) 实现其同步,或者其他手动同步的方法。
- Map提供的不是对象与数组的关联,而是对象和对象的关联。
- Set只接受不重复的对象。HashSet提供了最快的查询速度。而TreeSet则保持元素有序。LinkedHashSet保持元素的插入顺序。
- 没必要再在新代码里使用旧类库留下来的Vector,Hashtable和Stack了。
相关推荐
"Java集合类总结" Java集合类是Java语言中的一种重要数据结构,用于存储和管理数据。Java集合类可以分为两种:Collection接口和Map接口。Collection接口有两个子接口:List接口和Set接口。List接口是有序的,可以...
### Java集合类详解总结 在Java编程中,集合框架(Collection Framework)是处理一组对象的强大工具,它提供了标准的数据结构来存储和操作这些对象。Java集合框架主要包括`Collection`、`Set`、`List`、`Queue`、`...
以下是对标题和描述中提到的Java集合类的详细总结: 首先,所有Java集合类都继承自`java.util.Collection`接口。`Collection`接口是所有集合框架的基础,它定义了集合的基本操作,如添加、删除和遍历元素。`...
本文将对Java中一些常用的集合类进行总结。 首先,ArrayList是List接口的一个实现,它允许我们在列表中按索引存取元素。在上述代码中,创建了一个ArrayList对象`list`并添加了不同类型的元素,包括字符串和自定义的...
### Java集合框架总结 #### 一、Java集合框架概述 Java集合框架是Java标准库的一部分,它提供了一系列的接口和类来存储和操作各种类型的对象集合。这些接口和类遵循一致的设计模式,使得开发人员可以方便地管理和...
### Java集合排序及Java集合类详解 #### 一、集合框架概述 集合框架是Java编程语言的核心组件之一,用于组织和操作数据集。Java集合框架提供了多种数据结构,包括列表(List)、集(Set)和映射(Map),这些数据结构...
### Java集合类总结 #### 一、概述 Java集合类框架是Java标准库的一个重要组成部分,主要用于存储和处理数据集合。这些集合类被定义在`java.util`包中,为开发者提供了灵活的数据结构来实现各种应用程序的需求。...
`java.util.Collection`接口是Java集合框架的基础,它是所有Set和List集合类型的根接口。该接口定义了一系列基本的操作方法,如添加(add)、删除(remove)、获取元素数量(size)等。这些方法为实现集合框架提供了统一的...
这篇7页的PDF文档“java集合类HashMap总结”可能是对HashMap类的深入解析,包括其原理、常用方法以及在实际开发中的应用。 HashMap的核心特性在于它的哈希函数,这个函数将键(key)转换为一个哈希码(hash code)...
### Java集合框架使用总结 #### 一、概述 在Java编程中,集合框架是一个非常重要的概念,它提供了标准的方式来存储和操作数据集合。Java集合框架的设计原则是将数据结构抽象成一组接口,再通过不同的实现类来具体...
### Java集合类详解 #### 一、概述 Java集合框架是Java编程语言中处理数据结构的一个重要组成部分。它提供了一套标准的接口和实现来帮助开发者高效地存储、检索和操作对象。Java集合主要包括两大类型:`Collection...
### Java集合类总结 在Java开发中,集合类(Containers)是极其重要的组成部分,它们作为开发者日常编程不可或缺的工具,不仅让代码变得更加简洁、高效,还能显著提升程序的功能性和灵活性。本文将对Java标准类库中...
根据给定的信息,本文将详细解释“泛型集合类的大致应用”,重点在于Java中的泛型集合类,如`ArrayList`、`HashMap`等,并结合实际代码示例进行讲解。 ### 泛型集合类概述 在Java编程语言中,集合框架提供了一组...