Java容器类List、ArrayList、Vector及map、HashTable、HashMap的区别
List和Map是接口,ArrayList和HashMap分别是它们的实现类.
ArrayList和HashMap是异步的,Vector和HashTable是同步的,所以Vector和HashTable是线程安全的,而ArrayList和HashMap并不是线程安全的。因为同步需要花费机器时间,所以Vector和HashTable的执行效率要低于ArrayList和HashMap。
Collection
├List 接口
│├LinkedList 链表
│├ArrayList 顺序结构动态数组类
│└Vector 向量
│ └Stack 栈
└Set
Map
├Hashtable
├HashMap
└WeakHashMap
List接口
List是有序的Collection,使用此接口能够精确的控制每个元素插入的位置。用户能够使用索引(元素在List中的位置,类似于数组下标)来访问List中的元素,这类似于Java的数组。
和下面要提到的Set不同,List允许有相同的元素。
除了具有Collection接口必备的iterator()方法外,List还提供一个listIterator()方法,返回一个ListIterator接口,和标准的Iterator接口相比,ListIterator多了一些add()之类的方法,允许添加,删除,设定元素,还能向前或向后遍历。
实现List接口的常用类有LinkedList,ArrayList,Vector和Stack。
ArrayList类
ArrayList实现了可变大小的数组。它允许所有元素,包括null。ArrayList没有同步。
size,isEmpty,get,set方法运行时间为常数。但是add方法开销为分摊的常数,添加n个元素需要O(n)的时间。其他的方法运行时间为线性。
每个ArrayList实例都有一个容量(Capacity),即用于存储元素的数组的大小。这个容量可随着不断添加新元素而自动增加,但是增长算法并没有定义。当需要插入大量元素时,在插入前可以调用ensureCapacity方法来增加ArrayList的容量以提高插入效率。
和LinkedList一样,ArrayList也是非同步的(unsynchronized)。
Map接口
请注意,Map没有继承Collection接口,Map提供key到value的映射。一个Map中不能包含相同的key,每个key只能映射一个value。Map接口提供3种集合的视图,Map的内容可以被当作一组key集合,一组value集合,或者一组key-value映射。
HashMap类
HashMap和Hashtable类似,不同之处在于HashMap是非同步的,并且允许null,即null value和null key。,但是将HashMap视为Collection时(values()方法可返回Collection),其迭代子操作时间开销和HashMap的容量成比例。因此,如果迭代操作的性能相当重要的话,不要将HashMap的初始化容量设得过高,或者load factor过低。
分享到:
相关推荐
Java容器类List、ArrayList、Vector及map、HashTable应用 List、ArrayList、Vector及map、HashTable是Java中常用的容器类,它们都继承自Collection接口,并提供了不同的实现方式和特点。在实际开发中,选择合适的...
List、ArrayList、Vector及map、HashTable、HashMap是Java容器类中的几个重要的接口和实现类,了解它们之间的区别是非常重要的。 首先,我们来看List和ArrayList的区别。List是一个接口,而ArrayList是一个实现了...
Java中的容器类是Java集合框架的重要组成部分,它们用于存储和管理数据。在Java中,主要有两种类型的容器:List和Map。List是有序的集合,而Map则是键值对的存储结构。 1. List接口与ArrayList类 List是一个接口,...
ArrayList和Vector,以及HashMap和Hashtable,都是常用的容器,但它们之间存在一些关键的区别,这将影响到在不同场景下的选择和使用。 首先,我们来看ArrayList和Vector的区别: 1. **同步性**: - `ArrayList` ...
在Java编程语言中,ArrayList、Hashtable和Vector是三种常见的数据结构,它们都用于存储和管理对象,但各有特点和适用场景。以下是对这三个容器的详细解释: ArrayList是Java集合框架中的一部分,它实现了List接口...
本文主要关注的是Java中的两种主要容器类型:Collection和Map,以及它们的一些具体实现,如List接口下的ArrayList、LinkedList和Vector,以及Map接口下的HashMap和Hashtable。 首先,我们来看List接口。List是有序...
2. **HashMap**:`HashMap` 则是在 Java 1.2 版本中引入的,它是 `Map` 接口的一个具体实现类。相比于 `Hashtable`,`HashMap` 在设计上更为灵活,并且支持更高的性能。 #### 二、同步性 - **Hashtable**:所有的...
### Java集合类与容器类详解 #### 一、引言 在Java编程中,集合类是一种非常重要的数据结构,用于存储一系列对象。相比于数组,集合类提供了更多的灵活性和功能,尤其是在处理未知数量的对象时更为方便。Java标准...
本文将详细解析并对比Java中的各种容器类,特别是`Collection`、`List`、`ArrayList`、`Vector`以及`Map`、`HashTable`、`HashMap`的区别。这些知识点对于面试复习尤其重要。 #### 二、基础概念 - **`Collection`*...
7. 容器与多线程:学习在多线程环境中使用容器,了解线程安全问题,例如同步容器类(如Vector、HashTable)和并发容器类(如ConcurrentHashMap、CopyOnWriteArrayList)。 8. 泛型:利用泛型在容器中存储特定类型的...
不同于`List`和`Set`,`Map`接口存储键值对,如`HashMap`、`HashTable`和`TreeMap`。`HashMap`是基于哈希表的,查找速度快,而`HashTable`是线程安全的,但性能较低。`TreeMap`保持键的排序,提供基于键的有序视图。...
集合框架的层级结构包括了多种类和接口,如HashSet、LinkedList、ArrayList、Vector、Hashtable、HashMap和TreeMap等,它们各自实现并扩展了上述接口,提供了不同特性的数据结构。 **Collection接口的方法** - `add...
在Java编程中,容器是用来存储和管理对象的类或接口,...总之,Java中的容器类提供了灵活的方式来存储和操作对象,理解并熟练掌握List、Set、Map及其各自实现类的特性和使用场景,对于编写高效、可维护的代码至关重要。
2. List:有序的集合,常用的实现类有 ArrayList、Vector、LinkedList 等。 * ArrayList:基于动态数组实现,支持随机访问。 * Vector:和 ArrayList 类似,但它是线程安全的。 * LinkedList:基于双向链表实现,...
本文将简要介绍Java容器的主要概念、API以及常用的容器类。 首先,Java容器分为两大主要类别:Collection和Map。Collection是所有单值容器的父接口,包括List、Set和Queue等子接口。List接口代表有序的集合,允许有...
Java容器,主要包括集合框架中的Set、List、Map和Queue接口,它们是Java编程中处理数据的重要工具。下面将对这些接口及其常见的实现类进行详细解释。 1. **Set接口**: Set接口代表一个无序且不允许重复元素的集合...
Java容器类是Java编程语言中用于管理和组织对象的重要工具,它们位于`java.util`包下。容器类主要包括了集合框架(Collection Framework),这是一个强大的数据结构系统,提供了多种数据存储方式和操作方法。在这个...
容器通常指的是集合框架中的各种类,如List、Set、Map等,它们允许开发者以不同的方式存储和访问数据,提供了一系列灵活且强大的功能。 ### 一、Java中的容器类型 #### 1. List接口 List接口是有序的集合,可以...