HashMap,LinkedHashMap,TreeMap都属于Map
Map 主要用于存储键(key)值(value)对,根据键得到值,因此键不允许键重复,但允许值重复。
1.HashMap
是一个最常用的Map,它根据键的HashCode
值存储数据,根据键可以直接获取它的值,具有很快的访问速度。HashMap最多只允许一条记录的键为Null;允许多条记录的值为
Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致。如果需要同步,可以用
Collections的synchronizedMap方法使HashMap具有同步的能力。
HashMap 例子:
1 public class LinkHashMap { 2 3 public static void main(String[] args) { 4 //############HashMap例子#################// 5 HashMap<String, String> hashMap = new HashMap<String, String>(); 6 hashMap.put("A3", "AA"); 7 hashMap.put("A2", "BB"); 8 hashMap.put("A1", "CC"); 9 for (String key : hashMap.keySet()) { 10 System.out.println("key= "+ key + " and value= " + hashMap.get(key)); 11 } 12 } 13 }
输出结果为:
key= A1 and value= CC
key= A2 and value= BB
key= A3 and value= AA
2.LinkedHashMap
LinkedHashMap也是一个HashMap,但是内部维持了一个双向链表,可以保持顺序
1 package com.pensee.config; 2 3 import java.util.HashMap; 4 import java.util.Iterator; 5 import java.util.LinkedHashMap; 6 import java.util.Map; 7 8 public class LinkHashMap { 9 10 public static void main(String[] args) { 11 //############linkedMap例子#################// 12 LinkedHashMap<String, String> linkedMap = new LinkedHashMap<String, String>(); 13 linkedMap.put("A3", "AA"); 14 linkedMap.put("A2", "BB"); 15 linkedMap.put("A1", "CC"); 16 for (Iterator<String> iterator = linkedMap.values().iterator(); iterator.hasNext();) { 17 String name = (String) iterator.next(); 18 System.out.println(name); 19 } 20 21 //############HashMap例子#################// 22 HashMap<String, String> hashMap = new HashMap<String, String>(); 23 hashMap.put("A3", "AA"); 24 hashMap.put("A2", "BB"); 25 hashMap.put("A1", "CC"); 26 for (String key : hashMap.keySet()) { 27 System.out.println("key= "+ key + " and value= " + hashMap.get(key)); 28 } 29 } 30 }
输出结果为:AA
BB
CC
运行截图:
3.TreeMap 可以用于排序
总结: linkedMap在于存储数据你想保持进入的顺序与被取出的顺序一致的话,优先考虑LinkedMap,hashMap键只能允许为一条为空,value可以允许为多条为空,键唯一,但值可以多个。
linkedMap键和值都不可以为空