Java泛型数据结构Map和List
2016-03-23 17:58
435 查看
Java泛型
Java中常用的数据结构,Map、List、Set。以
Map<k, v>和
List<T>来说,Map是以键值对key-value结构存储的集合,List是对象的列表。
Map
Map是一个接口,所以不能直接 new Map。HashMap是Map的一个实现类,所以可以new HashMap。
常见的用法是:
Map<String, Integer> map = new HashMap<String, Integer>();
常见的Map实现类还有Hashtable。
HashMap
public class HashMap<K,V> extends AbstractMap<K,V> implements Map<K,V>, Cloneable, Serializable
Hashtable
public class Hashtable<K,V> extends Dictionary<K,V> implements Map<K,V>, Cloneable, java.io.Serializable
HashMap与Hashtable的比较
二者都实现了Map接口、Cloneable、Serializable接口,不同的是Hashtable继承自老旧的Dictionary类,HashMap继承自AbstractMapHashtable是同步的,HashMap是非同步的。也就是说Hashtable是线程安全的,HashMap不是线程安全的。同步和线程安全指的是在多线程同时操作同一个Hashtable的时候,可以保证里面的数据是一致的。而HashMap则需要在在程序中自己来做同步。不过自Java 1.5之后,java提供了同步的HashMap,
java.util.concurrent.ConcurrentHashMap。
Hashtable可以使用Iterator和Enumeration来循环, HashMap只能使用Iterator循环
Hashtable不允许为null的key和value,HashMap允许有一个key为null,允许有多个value为null。 >所以HashMap不能使用get(key)是否为null来判断是否存在某个key,应该使用containsKey(key)来判断。
HashMap的size始终是2的次方,Hashtable的扩容方式是现有容量乘以2+1。
HashMap和Hashtable的衍生类
HashMap和Hashtable都是无序的,HashMap有一个之类LinkedHashMap,是有序的。Hashtable最常见的之类是Properties
List
List是一个接口,继承自Collection。public interface List<E> extends Collection<E>
由于List是个接口,所以不能直接 new List。
ArrayList
ArrayList是List的一个实现类,所以可以new ArrayList。用法如下:List<String> list = new ArrayList<String>();
ArrayList的定义是这样的:
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable
ArrayList是无序的;
ArrayList允许重复;
Set
Set也是一个接口,继承自Collectionpublic interface Set<E> extends Collection<E>
Set不允许重复。
Set是无序的。
阅读理解
相关文章推荐
- 数据结构与算法分析---表ADT
- 大话数据结构读书笔记系列(一)数据结构绪论
- 数据结构9-查找
- 数据结构学习笔记--(1)利用递归求N!
- hdu 4027(线段树)
- 【MySQL解惑】索引背后的数据结构及算法原理
- 数据结构8-排序2
- 数据结构---线性表----循环链表和双向链表
- 数据结构---线性表----循环链表和双向链表
- 数据结构---线性表----循环链表和双向链表
- 数据结构---线性表----循环链表和双向链表
- 数据结构---线性表----循环链表和双向链表
- 数据结构---线性表----循环链表和双向链表
- 数据结构---线性表----循环链表和双向链表
- 数据结构---线性表----循环链表和双向链表
- 数据结构---线性表----循环链表和双向链表
- 数据结构---线性表----循环链表和双向链表
- 数据结构---线性表----循环链表和双向链表
- 数据结构---线性表----循环链表和双向链表
- 数据结构---线性表----循环链表和双向链表