【笔记】集合框架之Map
java.util
接口 Map<K,V>
- 类型参数:
K- 此映射所维护的键的类型V- 映射值的类型- Map是以键值对的形式存储数据的。
Map集合与Collection集合一样,处于集合框架的顶层:
常用方法:
1.增加
2.删除
V |
put(K key, V value)将指定的值与此映射中的指定键关联(可选操作)。 |
void |
putAll(Map<? extends K,? extends V> m)从指定映射中将所有映射关系复制到此映射中(可选操作)。 |
2.删除
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 }
浙公网安备 33010602011771号