【笔记】集合框架之Map

java.util 
接口 Map<K,V>

类型参数:
K - 此映射所维护的键的类型
V - 映射值的类型
Map是以键值对的形式存储数据的。
Map集合与Collection集合一样,处于集合框架的顶层:
 
 

常用方法:

1.增加
    
 V put(K key, V value)
          将指定的值与此映射中的指定键关联(可选操作)。
 void putAll(Map<? extends K,? extends V> m)
          从指定映射中将所有映射关系复制到此映射中(可选操作)。

2.删除
 
 void clear()
          从此映射中移除所有映射关系(可选操作)。
 V remove(Object key)
          如果存在一个键的映射关系,则将其从此映射中移除(可选操作)。

3.判断

 boolean isEmpty()
          如果此映射未包含键-值映射关系,则返回 true
 boolean containsKey(Object key)
          如果此映射包含指定键的映射关系,则返回 true
 boolean containsValue(Object value)
          如果此映射将一个或多个键映射到指定值,则返回 true

4.查询
 
 V get(Object key)
          返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回 null
 int size()
          返回此映射中的键-值映射关系数。
 Collection<V> values()
          返回此映射中包含的值的 Collection 视图。
 
Map:
 ---HashTable:底层是哈希表数据结构,不可以存入null键或null值,该集合线程是同步的
 ---HashMap:底层是哈希表数据结构,可以存入null键和null值,该集合线程是不同步的
 ---TreeMap:底层是二叉树数据结构,可以对map集合中的键进行排序,不能存入null键,可以存入null值,该集合线程是不同步的
 
用例:
 
HashMap用例
 1     @Test
 2     public void HashMapDemo() {
 3         Map<String, String> map = new HashMap<String, String>();
 4         // 添加元素
 5         map.put("a", "张1");// 注意:put()方法会返回一个value的值
 6         map.put("b", null);// 值可以为空
 7         map.put(null, "张3");// 键可以为空
 8         System.out.println("a==" + map.get("a"));
 9         System.out.println("b==" + map.get("b"));
10         System.out.println("null==" + map.get(null));
11         Collection<String> col = map.values();
12         System.out.println("Collection:" + col);
13         System.out.println("Map:" + map);
14         // 获取map中的值
15         // 方法1 keySet
16         Set<String> keySet = map.keySet();
17         for (Iterator<String> it = keySet.iterator(); it.hasNext();) {
18             String key = it.next();
19             String value = map.get(key);
20             System.out.println("key==" + key + " value==" + value);
21         }
22         // 方法2 entrySet
23         Set<Map.Entry<String, String>> entrySet = map.entrySet();
24         for (Iterator<Map.Entry<String, String>> it = entrySet.iterator(); it
25                 .hasNext();) {
26             // 利用迭代器获得每个Entry
27             Map.Entry<String, String> entry = it.next();
28             // 通过entry直接获得value和key
29             String key = entry.getValue();
30             String value = entry.getValue();
31             System.out.println("key==" + key + " value==" + value);
32         }
33     }

TreeMap用例

 1 class Student {
 2         private String name;
 3         private int age;
 4 
 5         Student(String name, int age) {
 6             this.name = name;
 7             this.age = age;
 8         }
 9 
10         String getName() {
11             return name;
12         }
13 
14         int getAge() {
15             return age;
16         }
17 
18     }
19 
20     // 创建比较器
21     class StuComparator implements Comparator<Student> {
22 
23         @Override
24         public int compare(Student s1, Student s2) {
25             // TODO 自动生成的方法存根
26             int num = s1.name.compareTo(s2.name);// 按照姓名递增排序
27             if (num == 0)
28                 return new Integer(s1.age).compareTo(new Integer(s2.age));// 姓名相同按年龄递增
29             return num;
30         }
31     }
32 
33     @Test
34     public void Test01() {
35         TreeMap<Student, String> map = new TreeMap<Student, String>(
36                 new StuComparator());
37         map.put(new Student("dang1", 12), "shandong");
38         map.put(new Student("aang1", 12), "shandong");
39         map.put(new Student("gang1", 12), "shandong");
40         map.put(new Student("gang1", 11), "shandong");
41         map.put(new Student("hang1", 16), "shandong");
42         map.put(new Student("2ang6", 12), "shandong");
43         map.put(new Student("wang1", 12), "shandong");
44         Set<Map.Entry<Student, String>> entrySet = map.entrySet();
45         for (Iterator<Map.Entry<Student, String>> it = entrySet.iterator(); it
46                 .hasNext();) {
47             Map.Entry<Student, String> et = it.next();
48             Student stu = et.getKey();
49             String value = et.getValue();
50             System.out.println("name=" + stu.getName() + " age=" + stu.getAge()
51                     + " adress=" + value);
52         }
53     }

 

posted on 2013-08-17 17:18  啷哩个啷  阅读(168)  评论(0)    收藏  举报

导航