Map——映射
An object that maps keys to values.A map cannot contain duplicate keys;each key can map to at most one value.
Map是将键映射到值的对象,一个映射不能包含重复的键,一个键最多只能映射到一个值。
1、Map是一个接口,它的实现类:HashMap
import java.util.HashMap; public class HashMap1 { public static void main(String[] args) { HashMap map = new HashMap(); map.put("a", "zhangsan"); map.put("b", "lisi"); map.put("c", "wangwu"); map.put("a", "zhaoliu"); System.out.println(map); //打印{a=zhaoliu, c=wangwu, b=lisi} String value = (String)map.get("b"); System.out.println(value); //打印lisi String value2 = (String)map.get("d"); System.out.println(value2); //打印null } }
HashMap存入数据使用put()方法,取出特定键的值使用get()方法。
对于HashMap的keySet()方法返回此映射中所包含的键的 Set
视图,values()方法返回此映射所包含的值的
视图。
Collection
Map的keySet()方法会返回key的集合,因为Map的键是不能重复的,因此keySet()方法的返回类型是Set;而Map的值是可以重复的,因此values()方法的返回类型是Collection,可以容纳重复的元素。
2、使用HashMap统计命令行参数及个数:如java MapTest4 hello world hello welcome
import java.util.HashMap; import java.util.Iterator; import java.util.Set; public class MapTest4 { public static void main(String[] args) { HashMap map = new HashMap(); for(int i =0; i < args.length;i++ ) { if(null==map.get(args[i])) { map.put(args[i],new Integer(1)); } else { int num = ((Integer)map.get(args[i])).intValue(); map.put(args[i], new Integer(num +1)); } } Set set = map.keySet(); for(Iterator iter = set.iterator();iter.hasNext();) { String key = (String)iter.next(); Integer value = (Integer)map.get(key); System.out.println(key + ":" + value); } } }
以上是先得到map的一个key集,然后使用迭代器遍历key,然后使用map.get(key)得到值,从而实现map的遍历
2、使用Map的内部类Entry来遍历Map
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; public class MapTest5 { public static void main(String[] args) { HashMap map = new HashMap(); map.put("a", "aaaaa"); map.put("b", "bbbbb"); map.put("c", "cccccc"); map.put("d", "ddddd"); Set set = map.entrySet(); for(Iterator iter = set.iterator();iter.hasNext();) { Map.Entry entry = (Map.Entry)iter.next(); String key = (String)entry.getKey(); String value = (String)entry.getValue(); System.out.println(key + ":" + value); } } }
3、TreeMap,与TreeSet类似,只不过TreeMap是按照映射的键(key)的顺序来进行排序的。