java中在map中存取值操作
在java中map是使用键值对的形式存在的这与数组非常的相似。Map是一个接口它当中包括:HashTable,HashMap,TreeMap等实现类!
对map操作的方法有以下几种,通过这些方法将Map中的内容进行修改:
clear()从Map中清除所有的映射。
remove(指定的键)从Map中删除键和与之关联的值!
put(键,值)在map集合中添加一组键值对。
putAll(Map)将指定的Map复制到此映射中!
HashMap是一个最常用的Map,它是根据键值一一对应的关系来存储数据!根据键可以直接获取到它对应的值。HashMap最多只允许一条记录的键为null,允许多条记录的值为null。(其实也不是不允许多条记录为null,因为看下面我写的代码):
[java]
- 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);
- }
输出的结果就是:
可见map.put(null,”??”);没有附上值(其实也不是没有付上值只不过后来的map.put(null,”4″)将上面的值覆盖了)
HashTable实现一个映象,它不允许所有的键值对为空,但是他允许键值为“”(空字符串)。
[java]
- 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));
- }
输出结果是:
[java]
- {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即可。