Collection、Set、List接口都属于单值的操作,即每次只能操作一个对象,

Map与他们不同的是,每次操作的是一对对象,即二元偶对象,Map中的每个元素都使用key->value的形式存储在集合中。

Map接口和SortedMap接口_子类

 

<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+"、");
		}
	}	

}

 Map接口和SortedMap接口_子类_02

 

排序的子类: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接口和SortedMap接口_子类_03

 

Map接口和SortedMap接口_实例化_04

 

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"));
	}	

}

 Map接口和SortedMap接口_实例化_05

 

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());
		}
	}	

}

 

SortedMap接口是排序接口,只要是实现了此接口的子类,都属于排序的子类,TreeMap也是此接口的一个子类。

Map接口和SortedMap接口_子类_06

import java.util.Map;
import java.util.SortedMap;
import java.util.TreeMap;

//=================================================
// File Name       :	SortedMap_demo
//------------------------------------------------------------------------------
// Author          :	Common



//主类
//Function        : 	SortedMap_demo;
public class SortedMap_demo {

	public static void main(String[] args) {
		// TODO 自动生成的方法存根
		SortedMap<String,String> map = null;				//声明Map对象
		map = new TreeMap<String,String>();	//key和value是String类
		map.put("zhangsan", "www.baidu.com");	//增加内容
		map.put("lisi", "www.alibaba.com");			//增加内容
		map.put("wangwu", "www.google.com");	//增加内容
		System.out.println("第一个元素的内容的key:"+map.firstKey());
		System.out.println("对应的值:"+map.get(map.firstKey()));
		System.out.println("最后一个元素的内容的key:"+map.lastKey());
		System.out.println("对应的值:"+map.get(map.lastKey()));
		
		System.out.println("输出小于指定范围的");
		for(Map.Entry<String, String> me: map.headMap("wangwu").entrySet()){
		System.out.println(me.getKey()+"-->"+me.getValue());
		}
		
		System.out.println("输出大于等于指定范围的");
		for(Map.Entry<String, String> me: map.tailMap("wangwu").entrySet()){
		System.out.println(me.getKey()+"-->"+me.getValue());
		}
		
		System.out.println("输出在指定范围的");
		for(Map.Entry<String, String> me: map.subMap("lisi","zhangsan").entrySet()){
		System.out.println(me.getKey()+"-->"+me.getValue());
		}
	}

}