文件地址: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());
}
}
}