HashMap,Hashtable,TreeMap ,Map

package com.wzy.list;

import java.util.HashMap;
import java.util.Hashtable;
import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;

public class MapTest {
    public static void main(String[] args) {
        Map<String,Object> hashmap = new HashMap<String,Object>();
        
        hashmap.put("aa", "AAA");
        hashmap.put("bb", 222);
        hashmap.put("null", "kong");
        hashmap.put(null, null);
        hashmap.put("cc", "");
        hashmap.put("", "test");
        
        System.out.println(hashmap.get(null));//null
        System.out.println(hashmap.get("null"));//kong
        System.out.println(hashmap.get("key"));//key值不存在返回null
        System.out.println(hashmap.get(""));//test
        Set<String> keys = hashmap.keySet();//取得所有的key
        Iterator key = keys.iterator();
        key.forEachRemaining((x)->{System.out.println(x);});
        System.out.println("----------------");
        Set<Entry<String, Object>> values = hashmap.entrySet();
        values.stream().forEach((x)->{System.out.println(x);});//遍例集合对象
        values.stream().forEach((x)->{System.out.println(x.getKey());});//遍例集合对象的key
        values.stream().forEach((x)->{System.out.println(x.getValue());});//遍例集合对象的value
        System.out.println("-------------");
        /**
         * hash(散列)输出是没有顺序的;tree是有序的
         * 
         * HashMap,Hashtable,TreeMapMap的子类
         * 三者用法类似
         * 但Hashtable不允许key和value是null
         * Hashtable是线程安全的,因为方法上有synchronized;HashMap是不安全的
         * 
         * TreeMap允许value为空,但不允许key为空,因为要靠key来排序
         * 像String,Integer这样的类已经覆写了Comparable<String>和hashCode,equals方法
         * 所以可以直接进行排序或者查找操作,
         * 如果是自定义的对象进行排序或者查找,要自己覆写Comparable<String>和hashCode,equals方法
         * 
         * 比如key存入一个自定义的对象,查找的话必须得实现hashCode,equals方法
         * 排序的话必须得实现Comparable<String>接口
         * */
        
        Map<String, Object> hashtable = new Hashtable<String, Object>();
        //table.put(null, null);key和value不可为空
        
        System.out.println("----treemap----");
        Map<Integer,String> treemap = new TreeMap<Integer,String>();
        //treemap.put(null, "2222");//key不可为空
        treemap.put(2, "2222");
        treemap.put(1, "1111");
        treemap.put(6, "6666");
        treemap.put(4, "4444");
        System.out.println(treemap);//{1=1111, 2=2222, 4=4444, 6=6666}自动排序
        
        
    }
}

 

posted on 2016-06-01 11:44  wzyy  阅读(248)  评论(0编辑  收藏  举报