实现Map接口的类用于存储键-值对,通过键来标示,因此键是不能重复的。
以下是Map中的常用方法的例子:
public class MapTest {
public static void main(String[] args) {
Map m1 = new HashMap();
Map m2 = new TreeMap();
m1.put("one", new Integer(1));
m1.put("two", new Integer(2));
m1.put("three", new Integer(3));
m2.put("six", new Integer(6));
m2.put("seven", new Integer(7));
System.out.println(m1.get("two"));//返回key所对应的value对象
System.out.println(m1.containsKey("three"));
System.out.println(m1.containsValue(new Integer(2)));
m1.put("three", new Integer(30));//若Map中存在key为three则将新的value替换原有的
System.out.println(m1);
m1.put("five", new Integer(5));//若Map中不存在key为five则直接将键值对插入
System.out.println(m1);
if(m1.containsKey("five")){
int i = ((Integer)m1.get("five")).intValue();//m1.get("five")是以Object类型返回的,
//需要强制转换为Integer类型,再转为int
System.out.println(i);
}
Map m3 = new HashMap(m2);
m3.putAll(m1);
System.out.println(m3);
}
}
自动打包和解包:
打包:将基础类型转换为对象;解包:将对象转换为基础类型。 利用上述例子解释下:
public class MapTest {
public static void main(String[] args) {
Map m1 = new HashMap();
Map m2 = new TreeMap();
//m1.put("one", new Integer(1));
m1.put("one", 1);//自动将int类型的1打包为new Integer(1)
//m1.put("two", new Integer(2));
m1.put("two", 2);
//m1.put("three", new Integer(3));
m1.put("three", 3);
//m2.put("six", new Integer(6));
m2.put("six", 6);
//m2.put("seven", new Integer(7));
m2.put("seven", 7);
System.out.println(m1.get("two"));
System.out.println(m1.containsKey("three"));
//System.out.println(m1.containsValue(new Integer(2)));
System.out.println(m1.containsValue(2));
//m1.put("three", new Integer(30));
m1.put("three", 30);
System.out.println(m1);
//m1.put("five", new Integer(5));
m1.put("five", 5);
System.out.println(m1);
if(m1.containsKey("five")){
//int i = ((Integer)m1.get("five")).intValue();
int i = (Integer)m1.get("five");//(Integer)m1.get("five")自动将Integer解包为int
System.out.println(i);
}
Map m3 = new HashMap(m2);
m3.putAll(m1);
System.out.println(m3);
}
}