java集合 :map 学习

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());
        }
 

原文地址:https://www.cnblogs.com/mpxBlog/p/4538787.html