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 * * 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}自动排序 } }
时间: 2024-11-06 22:05:53