文件地址:java_basic包下map_demo.java
Collection、Set、List接口都属于单值的操作,即每次只能操作一个对象,
而Map与他们不同的是,每次操作的是一对对象,即二元偶对象,Map中的每个元素都使用key->value的形式存储在集合中。
<1>实例操作一:向集合中增加和取出内容
在Map接口中使用put(Object key,Object value)方法可以向集合中增加内容,之后通过get(E key)方法根据key找到其对应的value
import java.util.HashMap; import java.util.Map; //================================================= // File Name : Map_demo //------------------------------------------------------------------------------ // Author : Common //主类 //Function : Map_demo; public class Map_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 Map<String,String> map = null; //声明Map对象 map = new HashMap<String,String>(); //key和value是String类 map.put("zhangsan", "www.baidu.com"); //增加内容 map.put("lisi", "www.alibaba.com"); //增加内容 map.put("wangwu", "www.google.com"); //增加内容 String val = map.get("zhangsan"); System.out.println("取出内容:"+val); } }
<2>实例操作二:判断指定的key或者value是否存在
import java.util.HashMap; import java.util.Map; //================================================= // File Name : Map_demo //------------------------------------------------------------------------------ // Author : Common //主类 //Function : Map_demo; public class Map_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 Map<String,String> map = null; //声明Map对象 map = new HashMap<String,String>(); //key和value是String类 map.put("zhangsan", "www.baidu.com"); //增加内容 map.put("lisi", "www.alibaba.com"); //增加内容 map.put("wangwu", "www.google.com"); //增加内容 String val = map.get("zhangsan"); System.out.println("取出内容:"+val); if(map.containsKey("zhangsan")){ //查找指定的key System.out.println("搜索的key存在"); }else{ System.out.println("搜索的key不存在"); } if(map.containsValue("www.baidu.com")){ //查找指定的value System.out.println("搜索的value存在"); }else{ System.out.println("搜索的value不存在"); } } }
<3>实例操作三:输出全部的key
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; //================================================= // File Name : Map_demo //------------------------------------------------------------------------------ // Author : Common //主类 //Function : Map_demo; public class Map_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 Map<String,String> map = null; //声明Map对象 map = new HashMap<String,String>(); //key和value是String类 map.put("zhangsan", "www.baidu.com"); //增加内容 map.put("lisi", "www.alibaba.com"); //增加内容 map.put("wangwu", "www.google.com"); //增加内容 Set<String> keys = map.keySet(); //取得所有的key Iterator<String> iter = keys.iterator(); //实例化Iterator System.out.println("全部的key:"); while(iter.hasNext()){ String str = iter.next(); //取出集合的key System.out.println(str+"、"); } } }
<4>实例操作三:输出全部的value
import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; //================================================= // File Name : Map_demo //------------------------------------------------------------------------------ // Author : Common //主类 //Function : Map_demo; public class Map_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 Map<String,String> map = null; //声明Map对象 map = new HashMap<String,String>(); //key和value是String类 map.put("zhangsan", "www.baidu.com"); //增加内容 map.put("lisi", "www.alibaba.com"); //增加内容 map.put("wangwu", "www.google.com"); //增加内容 Collection<String> values = map.values(); //取得所有的value Iterator<String> iter = values.iterator(); //实例化Iterator System.out.println("全部的values:"); while(iter.hasNext()){ String str = iter.next(); //取出集合的key System.out.println(str+"、"); } } }
旧的子类:Hashtable
Hashtable也是Map中的一个子类,属于旧的操作类
import java.util.Collection; import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; import java.util.Map; import java.util.Set; //================================================= // File Name : Map_demo //------------------------------------------------------------------------------ // Author : Common //主类 //Function : Map_demo; public class Map_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 Map<String,String> map = null; //声明Map对象 map = new Hashtable<String,String>(); //key和value是String类 map.put("zhangsan", "www.baidu.com"); //增加内容 map.put("lisi", "www.alibaba.com"); //增加内容 map.put("wangwu", "www.google.com"); //增加内容 Set<String> keys = map.keySet(); //取得所有的key Iterator<String> iter = keys.iterator(); //实例化Iterator System.out.println("全部的key:"); while(iter.hasNext()){ String str = iter.next(); //取出集合的key System.out.println(str+"、"); } Collection<String> values = map.values(); //取得所有的value Iterator<String> iter2 = values.iterator(); //实例化Iterator System.out.println("全部的values:"); while(iter2.hasNext()){ String str = iter2.next(); //取出集合的value System.out.println(str+"、"); } } }
排序的子类:TreeMap
排序后输出
import java.util.Collection; import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; //================================================= // File Name : Map_demo //------------------------------------------------------------------------------ // Author : Common //主类 //Function : Map_demo; public class Map_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 Map<String,String> map = null; //声明Map对象 map = new TreeMap<String,String>(); //实例化Map对象 map.put("B", "www.baidu.com"); //增加内容 map.put("A", "www.alibaba.com"); //增加内容 map.put("C", "www.google.com"); //增加内容 Set<String> keys = map.keySet(); //取得所有的key Iterator<String> iter = keys.iterator(); //实例化Iterator System.out.println("全部的key:"); while(iter.hasNext()){ String str = iter.next(); //取出集合的key,排序后输出 System.out.println(str+"、"); } } }
弱引用类:WeakHashMap
之前的Map子类中的数据都是使用强引用保存的,即里面的内容不管是否使用都始终在集合中保留,如果希望集合自动清理暂时不用的数据就使用WeakHashMap类。这样,当进行垃圾收集时会释放掉集合中的垃圾信息。
import java.util.Collection; import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; import java.util.WeakHashMap; //================================================= // File Name : Map_demo //------------------------------------------------------------------------------ // Author : Common //主类 //Function : Map_demo; public class Map_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 Map<String,String> map = null; //声明Map对象 map = new WeakHashMap<String,String>(); //实例化Map对象 map.put(new String("B"), new String("www.baidu.com")); //增加内容 map.put("A", "www.alibaba.com"); //增加内容 System.gc(); map.put("C", "www.google.com"); //增加内容 System.out.println("内容:"+map); } }
Map输出方式一:Iterator输出Map(使用 allSet = map.entrySet();,重要:开发中经常使用)
import java.util.Collection; import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; import java.util.WeakHashMap; //================================================= // File Name : Map_demo //------------------------------------------------------------------------------ // Author : Common //主类 //Function : Map_demo; public class Map_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 Map<String,String> map = null; //声明Map对象 map = new WeakHashMap<String,String>(); //实例化Map对象 map.put("B", "www.baidu.com"); //增加内容 map.put("A", "www.alibaba.com"); //增加内容 map.put("C", "www.google.com"); //增加内容 Set<Map.Entry<String, String>> allSet = null; //声明一个Set集合,指定泛型 allSet = map.entrySet(); //将Map接口实例变为Set接口实例 Iterator<Map.Entry<String, String>> iter = null; //声明Iterator对象 iter = allSet.iterator(); //实例化Iterator对象 while(iter.hasNext()){ Map.Entry<String, String> me = iter.next(); //找到Map.Entry实例 System.out.println(me.getKey()+"-->"+me.getValue()); } } }
Map输出方式二:foreach输出Map
import java.util.Collection; import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; import java.util.WeakHashMap; //================================================= // File Name : Map_demo //------------------------------------------------------------------------------ // Author : Common //主类 //Function : Map_demo; public class Map_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 Map<String,String> map = null; //声明Map对象 map = new WeakHashMap<String,String>(); //实例化Map对象 map.put("B", "www.baidu.com"); //增加内容 map.put("A", "www.alibaba.com"); //增加内容 map.put("C", "www.google.com"); //增加内容 for(Map.Entry<String, String> me: map.entrySet()){ System.out.println(me.getKey()+"-->"+me.getValue()); } } }
直接使用非系统类作为Key
import java.util.Collection; import java.util.HashMap; import java.util.Hashtable; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; import java.util.WeakHashMap; //================================================= // File Name : Map_demo //------------------------------------------------------------------------------ // Author : Common //主类 //Function : Map_demo; public class Map_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 Map<String,person> map = null; //声明Map对象,指定泛型类型 map = new HashMap<String,person>(); //实例化Map对象 map.put("zhangsan", new person("张三",30)); System.out.println(map.get("zhangsan")); } }
key可以重复的Map集合:IdentityHashMap
import java.util.Collection; import java.util.HashMap; import java.util.Hashtable; import java.util.IdentityHashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; import java.util.TreeMap; import java.util.WeakHashMap; //================================================= // File Name : Map_demo //------------------------------------------------------------------------------ // Author : Common //主类 //Function : Map_demo; public class Map_demo { public static void main(String[] args) { // TODO 自动生成的方法存根 Map<person,String> map = null; //声明Map对象,指定泛型类型 map = new IdentityHashMap<person,String>(); //实例化Map对象 map.put(new person("张三",30),"zhangsan_1"); map.put(new person("张三",30),"zhangsan_1"); Set<Map.Entry<person, String>> allSet = null; allSet = map.entrySet(); Iterator<Map.Entry<person, String>> iter = null; iter = allSet.iterator(); while(iter.hasNext()){ Map.Entry<person, String> me = iter.next(); //找到Map.Entry实例 System.out.println(me.getKey()+"-->"+me.getValue()); } } }