在java中map是使用键值对的形式存在的这与数组非常的相似。Map是一个接口它当中包括:HashTable,HashMap,TreeMap等实现类!
对map操作的方法有以下几种,通过这些方法将Map中的内容进行修改:
clear()从Map中清除所有的映射。
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); }输出的结果就是:
{null=4, fasda=fasd}
HashTable实现一个映象,它不允许所有的键值对为空,但是他允许键值为“”(空字符串)。
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)
package map; import java.util.ArrayList; import java.util.Collections; import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; import java.util.Map; import java.util.TreeMap; public class MyMapClass { public static void main(String[] args) { printHashMap(); System.out.println("----------------------------------------------------"); printHashtable(); System.out.println("----------------------------------------------------"); printTreeMap(); System.out.println("-----------------------------------------------------"); arrayList(); } public static void printHashMap(){//操作HashMap()的方法!!hashMap是无序的 Map<String, String> map=new HashMap<String, String>(); map.put(null, "4"); map.put("fasda","fasd"); System.out.println(map); Iterator<String> iterator=map.keySet().iterator();//获得迭代器Iterator while(iterator.hasNext()){//循环获得每个对象 Object key=iterator.next();//获得每个键元素 System.out.println(map.get(key));//输出值 } } public static void printHashtable(){ Hashtable<String,String> map=new Hashtable<String,String>();//操作HashTable的方法!!!无序的 map.put("01","01"); 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)); } } public static void printTreeMap(){ TreeMap<String,String> map=new TreeMap<String, String>(); map.put("01","01"); 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)); } } public static void arrayList(){ ArrayList<String> array=new ArrayList<String>(); array.add("01"); array.add("5q"); array.add("03"); array.add("04"); System.out.println(array);//未排序之前 for(int i=0;i<array.size();i++){ System.out.println(array.get(i)); } Collections.sort(array);//对列表集合进行排序 System.out.println(array); } }这是输出的内容:
{null=4, fasda=fasd} 4 fasd ---------------------------------------------------- {03=03, 01=01, 04=04} 03 01 04 ---------------------------------------------------- {01=01, 03=03, 04=04} 01 03 04 ----------------------------------------------------- [01, 5q, 03, 04] 01 5q 03 04 [01, 03, 04, 5q]
java中在map中存取值操作,布布扣,bubuko.com
原文:http://blog.csdn.net/finder_chang/article/details/20138553