在java中map是使用键值对的形式存在的这与数组很是的类似。Map是一个接口它当中包括:HashTable,HashMap,TreeMap等实现类!java
对map操做的方法有如下几种,经过这些方法将Map中的内容进行修改:数组
clear()从Map中清除全部的映射。spa
remove(指定的键)从Map中删除键和与之关联的值!指针
put(键,值)在map集合中添加一组键值对。对象
putAll(Map)将指定的Map复制到此映射中!排序
HashMap是一个最经常使用的Map,它是根据键值一一对应的关系来存储数据!根据键能够直接获取到它对应的值。HashMap最多只容许一条记录的键为null,容许多条记录的值为null。(其实也不是不容许多条记录为null,由于看下面我写的代码):接口
public static void printHashMap(){//操做HashMap()的方法!!hashMap是无序的 Map<String, String> map=new HashMap<String, String>(); map.put(null,"??"); map.put(null, "4"); map.put("fasda","fasd"); System.out.println(map); }
输出的结果就是:rem
{null=4, fasda=fasd}
可见map.put(null,"??");没有附上值(其实也不是没有付上值只不事后来的map.put(null,"4")将上面的值覆盖了)字符串
HashTable实现一个映象,它不容许全部的键值对为空,可是他容许键值为“”(空字符串)。get
Hashtable<String,String> map=new Hashtable<String,String>();//操做HashTable的方法!!!无序的 map.put("","01"); //map.put(null,"02"); map.put("03","03"); map.put("04","04"); System.out.println(map); Iterator<String> iterator=map.keySet().iterator(); while(iterator.hasNext()){ Object key=iterator.next(); System.out.println(map.get(key)); }
输出结果是:
{03=03, 04=04, =01} 03 04 01
若是将上面的map.put(null,"02")放开的话就会报空指针异常:
Exception in thread "main" java.lang.NullPointerException at java.util.Hashtable.hash(Unknown Source) at java.util.Hashtable.put(Unknown Source) at map.MyMapClass.printHashtable(MyMapClass.java:30) at map.MyMapClass.main(MyMapClass.java:13)
TreeMap默认为是升序排序,能够指定排序用的比较器,可是比较器必须实现Comparator接口。只有TreeMap才可以把保存的记录根据键排序,所以,能够把其余Map转化为TreeMap,转化的方法就是把其余的Map对象做为参数狗仔TreeMap便可。
Map中存值问题,当一个键值对应存一个值后,再次操做对应的键存值,则会清空本来的键对应的值,存入新的值。