Map存值问题的研究

java中在map中存取值操做

在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中存值问题,当一个键值对应存一个值后,再次操做对应的键存值,则会清空本来的键对应的值,存入新的值。

相关文章
相关标签/搜索