map三个实现类HashMap,TreeMap,HashTable
1. (1) HashMap概述:
HashMap是基于哈希表的Map接口的非同步实现。此实现提供所有可选的映射操作,并允许使用null值和null键。此类不保证映射的顺序,特别是它不保证该顺序恒久不变。
(2) HashMap的数据结构:
在java编程语言中,最基本的结构就是两种,一个是数组,另外一个是模拟指针(引用),所有的数据结构都可以用这两个基本结构来构造的,HashMap也不例外。HashMap实际上是一个“链表散列”的数据结构,即数组和链表的结合体。
网上详细的介绍:http://zhangshixi.iteye.com/blog/672697
Map存储健值对,根据键得到值,不允许键重复。
1、HashMap、LinkedHashMap、TreeMap 只允许一个键为null,值不限制。
2、Hashtable 线程安全,键不能为null,与HashMap类似,但效率较低,HashMap如果需要实现同步,可以使用Collections. synchronizedMap或ConcurrentHashMap 。
3、HashMap键无序;LinkedHashMap键保存了插入的顺序,使用Iterator遍历时,得到的也是插入顺序的记录;TreeMap默认按键的升序排序,可以定制比较器。
public class Hashtable<k,v> extends Dictionary<k,v> implements Map<k,v>, Cloneable, Serializable
public class HashMap<k,v> extends AbstractMap<k,v> implements Map<k,v>, Cloneable, Serializable
public class LinkedHashMap<k,v> extends HashMap<k,v> implements Map<k,v>
public class TreeMap<k,v> extends AbstractMap<k,v> implements SortedMap<k,v>, NavigableMap<k,v>, Cloneable, Serializable
public interface SortedMap<k,v> extends Map<k,v><k,v><k,v><k,v><k,v><k,v><k,v><k,v><k,v><k,v><k,v><k,v><k,v><k,v><k,v>
遍历Map的方法:
Map<string,integer> hashMap = new HashMap<string,integer>();
Random random = new Random();
for(int i=1;i<11;i++){
hashMap.put("map"+i, random.nextInt(i));
}
Set hashMapKey = hashMap.keySet();
Collection hashMapValue = hashMap.values();
Iterator keyVal = hashMapKey.iterator();
System.out.print("key:");
while(keyVal.hasNext()){
System.out.print(" "+keyVal.next());
}
Iterator hashMapVal = hashMapValue.iterator();
System.out.print("
value:");
while(hashMapVal.hasNext()){
System.out.print(" "+hashMapVal.next());
}