掌握Map接口与Collection接口不同
掌握Map与Map.Entry接口的关系
掌握Map接口的常用子类:HashMap、HashTable、TreeMap、WeekHashMap
掌握HashMap与HashTable的区别
3、具体内容
Collection的操作中之前已经发现,每次保存对象都一个对象,但是在Map中保存是的一对对象,对象的形式是以:key->value的形式保存的。
就好像
电话本:张三->123456
Map接口中的方法
No. 方法或类 类型 描述
1 public void clear() 普通 清空Map集合
2 public boolean containsKey(Object key) 普通 判断指定的key是否存在
3 public boolean containsValue(Object value) 普通 判断指定的value是否存在
4 public Set<Map.Entry<K,V>> entrySet() 普通 将Map对象变为Set集合
5 public boolean equals(Object o) 普通 对象比较
6 public V get(Object K) 普通 根据key获得value
7 public int hashCode() 普通 返回哈希码
8 public boolean isEmpty() 普通 判断集合是否为空
9 public Set<K> keySet() 普通 取得所有的key
10 public V put(K key,V value) 普通 向集合中加入元素
11 public void putAll(Map<? extends K,extends V> t)普通 将一个Map集合中的内容加入到别一个Map
12 public V remove(Object key) 普通 根据key删除value
13 public int size() 普通 取得集合长度
14 public Collection<V> values() 普通 取得全部的value
Map接口的常用子类:
HashMap:无序存放的,是新的操作类,key不允许重复。
Hashtable:无序存放的,是旧的操作类,key不允许重复。
TreeMap:可以排序的Map集合,按集合中的key排序,key不允许重复。
WeakHashMap:弱引用的Map集合,当集合中的某些内容不再使用时,可以清楚掉无用的数据,可以使用gc进行回收。
IdentityHashMap:key可以重复的Map集合。
Map与Map.entry的关系:
代码例子:packageIntf.study;
importjava.util.Collection;
importjava.util.HashMap;
importjava.util.Map;
importjava.util.Set;
publicclassintfTest {
publicstaticvoidmain(String[] args) {
//一个key需要保存多个value的时候就需要使用到这个IdentityHashMap类
//第1段代码,Map不指定类型与指定类型
System.out.println("*************第1段代码:");
// Map:里面存放的是键值对集合,键值对的类型可以是任意封装类型,例:
//Map()相当于Map<Object,Object>.,这个是指装入的键是对象类型,装入的值是对象类型
//value对象通过toString转换为字符串,再转换成其他的类型,如Int、date等
Mapmap_t1 =newHashMap();
//以下的俩种使用方式都是对的
map_t1.put("a", 1);
map_t1.put(11,"abc");
// Map<key,value>:里面存放的也是键值对集合,但是类型只能是<>中指定的类型
Map<String, Integer> map_t2 =newHashMap<String, Integer>();
map_t2.put("a", 1);//正确使用方式
// map_t2.put(11,"abc"); //错误使用方式,会导致无法通过编译
intint_t=map_t2.get("a");//Map指定了类型,那么可直接获取类型值,而不是object值
System.out.println("int_t="+int_t);//打印对象
//第2段代码,取value值的方法,包括转换为数值、日期
System.out.println("*************第2段代码:");
Mapmap =newHashMap();//声明一个Map
map.put("sa_str","abc");//向map中放值,注意:map是key-value的形式存放的
map.put("sb_int", 50);//放非字符串的值
String str = map.get("sa_str").toString();//从map中取值
//,注意:不能写成map.get("sa"),因为后者返回是object类型
System.out.println("map值字符串sa_str="+ str);
String str2 = map.get("sb_int").toString();//整数value先转换为字符串
inta=Integer.parseInt(str2); //再通过字符串转换为整数
System.out.println("map值整数="+ a);
Object get = map.get("sa_str");//获取指定键所映射的值,value值是一个对象类型
System.out.println("打印对象get="+ get);//打印对象
if(getinstanceofString) {//判断键值是否为String类型
String value = (String) get;//获取指定的value值
System.out.println("在Map集合中键名sa_str的键值是:"+ value);//将value值输出
}
String key1 ="caterpillar";
String key2 ="justin";
map.put(key1,"caterpillar的讯息");
map.put(key2,"justin的讯息");
System.out.println(map.get(key1));
System.out.println(map.get(key2));
//第3段代码,改变value值、删除某Key元素、清空map(重新初始化)
System.out.println("*************第3段代码:");
map.put(key1,"123456789");