Java类集 _Map接口

来源:互联网 发布:rightfont for mac 编辑:程序博客网 时间:2024/06/03 17:14

1、掌握 Map 接口与 Collection 接口的不同

2、掌握 Map 与 Map.Entry 接口的关系

3、掌握 Map 接口的常用子类:HashMap、Hashtable 、TreeMap、WeakHashMap

4、掌握 HashMap 与 Hastable 的区别

Collection 的操作中之前已经发现,每次保存的对象都是一个对象,但是在Map 中保存的是一对对象,对象的形式是以:key --> value 的形式保存的。

就好像电话本:张三 -->123456




以  HashMap 为例,说明Map 的基本方法的操作:

[java] view plain copy
print?
  1. import java.util.HashMap ;  
  2. import java.util.Map ;  
  3. public class HashMapDemo01{  
  4.     public static void main(String args[]){  
  5.         Map<String,String> map = null// 声明Map对象,其中key和value的类型为String  
  6.         map = new HashMap<String,String>() ;  
  7.         map.put("mldn","www.mldn.cn") ; // 增加内容  
  8.         map.put("zhinangtuan","www.zhinangtuan.net.cn") ;   // 增加内容  
  9.         map.put("mldnjava","www.mldnjava.cn") ; // 增加内容  
  10.         String val = map.get("mldn") ;  // 根据key取出值  
  11.         System.out.println("取出的内容是:" + val) ;  
  12.     }  
  13. };  
在map 中也可以使用 containsXxx() 方法判断指定的key 或者 value 是否存在。

[java] view plain copy
print?
  1. import java.util.HashMap ;  
  2. import java.util.Map ;  
  3. public class HashMapDemo02{  
  4.     public static void main(String args[]){  
  5.         Map<String,String> map = null// 声明Map对象,其中key和value的类型为String  
  6.         map = new HashMap<String,String>() ;  
  7.         map.put("mldn","www.mldn.cn") ; // 增加内容  
  8.         map.put("zhinangtuan","www.zhinangtuan.net.cn") ;   // 增加内容  
  9.         map.put("mldnjava","www.mldnjava.cn") ; // 增加内容  
  10.         if(map.containsKey("mldn")){    // 判断key是否存在  
  11.             System.out.println("搜索的key存在!") ;  
  12.         }else{  
  13.             System.out.println("搜索的key不存在!") ;  
  14.         }  
  15.         if(map.containsValue("www.mldn.cn")){   // 判断value是否存在  
  16.             System.out.println("搜索的value存在!") ;  
  17.         }else{  
  18.             System.out.println("搜索的value不存在!") ;  
  19.         }  
  20.     }  
  21. };  
如果现在想输出全部的 key ,则使用如下方法:

Set<K> keySet()

[java] view plain copy
print?
  1. import java.util.HashMap ;  
  2. import java.util.Map ;  
  3. import java.util.Iterator ;  
  4. import java.util.Set ;  
  5. public class HashMapDemo03{  
  6.     public static void main(String args[]){  
  7.         Map<String,String> map = null// 声明Map对象,其中key和value的类型为String  
  8.         map = new HashMap<String,String>() ;  
  9.         map.put("mldn","www.mldn.cn") ; // 增加内容  
  10.         map.put("zhinangtuan","www.zhinangtuan.net.cn") ;   // 增加内容  
  11.         map.put("mldnjava","www.mldnjava.cn") ; // 增加内容  
  12.         Set<String> keys = map.keySet() ; // 得到全部的key  
  13.         Iterator<String> iter = keys.iterator() ;  
  14.         while(iter.hasNext()){  
  15.             String str = iter.next() ;  
  16.             System.out.print(str + "、") ;  
  17.         }  
  18.     }  
  19. };  
既然可以输出全部的 key ,那么就肯定可以输出全部的 value

Collection<V> values()

[java] view plain copy
print?
  1. import java.util.HashMap ;  
  2. import java.util.Map ;  
  3. import java.util.Iterator ;  
  4. import java.util.Collection ;  
  5. public class HashMapDemo04{  
  6.     public static void main(String args[]){  
  7.         Map<String,String> map = null// 声明Map对象,其中key和value的类型为String  
  8.         map = new HashMap<String,String>() ;  
  9.         map.put("mldn","www.mldn.cn") ; // 增加内容  
  10.         map.put("zhinangtuan","www.zhinangtuan.net.cn") ;   // 增加内容  
  11.         map.put("mldnjava","www.mldnjava.cn") ; // 增加内容  
  12.         Collection<String> values = map.values() ;    // 得到全部的value  
  13.         Iterator<String> iter = values.iterator() ;  
  14.         while(iter.hasNext()){  
  15.             String str = iter.next() ;  
  16.             System.out.print(str + "、") ;  
  17.         }  
  18.     }  
  19. };  

在Map 中也存在一个Hashtable 子类,实际上这个子类的推出时间与Vector 是一样的,都属于旧的 类。

[java] view plain copy
print?
  1. import java.util.HashMap ;  
  2. import java.util.Map ;  
  3. import java.util.Set ;  
  4. import java.util.Iterator ;  
  5. import java.util.Collection ;  
  6. public class HashtableDemo01{  
  7.     public static void main(String args[]){  
  8.         Map<String,String> map = null// 声明Map对象,其中key和value的类型为String  
  9.         map = new HashMap<String,String>() ;  
  10.         map.put("mldn","www.mldn.cn") ; // 增加内容  
  11.         map.put("zhinangtuan","www.zhinangtuan.net.cn") ;   // 增加内容  
  12.         map.put("mldnjava","www.mldnjava.cn") ; // 增加内容  
  13.         System.out.print("全部的key:") ;  
  14.         Set<String> keys = map.keySet() ; // 得到全部的key  
  15.         Iterator<String> iter = keys.iterator() ;  
  16.         while(iter.hasNext()){  
  17.             String str = iter.next() ;  
  18.             System.out.print(str + "、") ;  
  19.         }  
  20.         System.out.print("\n全部的value:") ;  
  21.         Collection<String> values = map.values() ;    // 得到全部的value  
  22.         Iterator<String> iter2 = values.iterator() ;  
  23.         while(iter2.hasNext()){  
  24.             String str = iter2.next() ;  
  25.             System.out.print(str + "、") ;  
  26.         }  
  27.     }  
  28. };  

在Map 中还存在一个TreeMap 的子类,此类也属于排序类,按key 排序。

[java] view plain copy
print?
  1. import java.util.TreeMap ;  
  2. import java.util.Map ;  
  3. import java.util.Set ;  
  4. import java.util.Iterator ;  
  5. import java.util.Collection ;  
  6. public class TreeMapDemo01{  
  7.     public static void main(String args[]){  
  8.         Map<String,String> map = null// 声明Map对象,其中key和value的类型为String  
  9.         map = new TreeMap<String,String>() ;  
  10.         map.put("A、mldn","www.mldn.cn") ;   // 增加内容  
  11.         map.put("C、zhinangtuan","www.zhinangtuan.net.cn") ; // 增加内容  
  12.         map.put("B、mldnjava","www.mldnjava.cn") ;   // 增加内容  
  13.         Set<String> keys = map.keySet() ; // 得到全部的key  
  14.         Iterator<String> iter = keys.iterator() ;  
  15.         while(iter.hasNext()){  
  16.             String str = iter.next() ;  
  17.             System.out.println(str + " --> " + map.get(str)) ; // 取出内容  
  18.         }  
  19.     }  
  20. };  
使用TreeMap 可以方便的完成排序的操作。如果自定义的类要想做为 key 的话,则肯定要实现 Comparable 接口,指定比较规则。

如果假设一个Map 中的某些内容长时间不使用的话,按照之前的做法是不会删除掉的,如果希望其可以自动删除掉,可以使用弱引用。当时面某些内容不使用时,可以自动删除掉。

[java] view plain copy
print?
  1. import java.util.WeakHashMap ;  
  2. import java.util.Map ;  
  3. import java.util.Set ;  
  4. import java.util.Iterator ;  
  5. import java.util.Collection ;  
  6. public class WeakHashMapDemo01{  
  7.     public static void main(String args[]){  
  8.         Map<String,String> map = null// 声明Map对象,其中key和value的类型为String  
  9.         map = new WeakHashMap<String,String>() ;  
  10.         map.put(new String("mldn"),new String("www.mldn.cn")) ;  
  11.         map.put(new String("zhinangtuan"),new String("www.zhinangtuan.net.cn")) ;  
  12.         map.put(new String("mldnjava"),new String("www.mldnjava.cn")) ;  
  13.         System.gc() ;   // 强制性进行垃圾的收集操作  
  14.         map.put(new String("lxh"),new String("lixinghua")) ;  
  15.         System.out.println(map) ;  
  16.     }  
  17. };  

总结:

1、介绍了Map 的特点及基本操作

2、Map 与Map.Entry 的关系

3、Map 的子类:HashMap、Hashtable、TreeMap、WeakHashMap

4、主要功能就是查找,根据 key 找到 value


来源:http://blog.csdn.net/hanshileiai/article/details/6754808
0 0
原创粉丝点击