Map
介绍
- Map和Collection没有继承关系
- Map集合以key和value的方式存储数据:键值对
- key和value都是引用类型的数据
- key不可以重复,通过指定的key就可以取出对应的value
- HashMap是无序的
- LinkedHashMap是有序的
- TreeMap 是按key排序的
常用方法
-
V put(K key, V value)
:向Map集合中添加键值对package com.collection; import java.util.HashMap; import java.util.Map; public class MapTest { public static void main(String[] args) { // 创建Map集合对象 Map<Integer, String> map = new HashMap<>(); // 1. 向Map集合中添加键值对 map.put(1, "zhangsan"); // 1在这里进行了自动装箱操作 map.put(2, "lisi"); } }
-
V get(Object key)
:通过key获取valuepackage com.collection; import java.util.HashMap; import java.util.Map; public class MapTest { public static void main(String[] args) { // 创建Map集合对象 Map<Integer, String> map = new HashMap<>(); // 1. 向Map集合中添加键值对 map.put(1, "zhangsan"); // 1在这里进行了自动装箱操作 map.put(2, "lisi"); // 2. 通过key获取value String value0 = map.get(1); System.out.println(value0); // output: zhangsan String value1 = map.get(2); System.out.println(value1); // output: lisi } }
-
int size()
:获取Map集合中键值对的个数package com.collection; import java.util.HashMap; import java.util.Map; public class MapTest { public static void main(String[] args) { // 创建Map集合对象 Map<Integer, String> map = new HashMap<>(); // 1. 向Map集合中添加键值对 map.put(1, "zhangsan"); // 1在这里进行了自动装箱操作 map.put(2, "lisi"); // 2. 通过key获取value String value0 = map.get(1); System.out.println(value0); // output: zhangsan String value1 = map.get(2); System.out.println(value1); // output: lisi // 3. 获取键值对的数量 int num = map.size(); System.out.println(num); // output: 2 } }
-
void clear()
:清空Map集合package com.collection; import java.util.HashMap; import java.util.Map; public class MapTest { public static void main(String[] args) { // 创建Map集合对象 Map<Integer, String> map = new HashMap<>(); // 1. 向Map集合中添加键值对 map.put(1, "zhangsan"); // 1在这里进行了自动装箱操作 map.put(2, "lisi"); // 2. 通过key获取value String value0 = map.get(1); System.out.println(value0); // output: zhangsan String value1 = map.get(2); System.out.println(value1); // output: lisi // 3. 获取键值对的数量 int num = map.size(); System.out.println(num); // output: 2 // 4. 清空Map集合 map.clear(); System.out.println(map.size()); // output: 0 } }
-
boolean containsKey(Object key)
:判断Map中是否包含某个keypackage com.collection; import java.util.HashMap; import java.util.Map; public class MapTest { public static void main(String[] args) { // 创建Map集合对象 Map<Integer, String> map = new HashMap<>(); // 1. 向Map集合中添加键值对 map.put(1, "zhangsan"); // 1在这里进行了自动装箱操作 map.put(2, "lisi"); // 5. 判断Map中是否包含某个key boolean isContains1 = map.containsKey(1); System.out.println(isContains1); // output: true boolean isContains3 = map.containsKey(3); System.out.println(isContains3); // output: false } }
-
boolean containsValue(Object value)
:判断Map中是否包含某个valuepackage com.collection; import java.util.HashMap; import java.util.Map; public class MapTest { public static void main(String[] args) { // 创建Map集合对象 Map<Integer, String> map = new HashMap<>(); // 1. 向Map集合中添加键值对 map.put(1, "zhangsan"); // 1在这里进行了自动装箱操作 map.put(2, "lisi"); // 6. 判断Map中是否包含某个value boolean isContainsZ = map.containsValue("zhangsan"); System.out.println(isContainsZ); // output: true boolean isContainsW = map.containsValue("wangwu"); System.out.println(isContainsW); // output: false } }
-
boolean isEmpty()
:判断Map集合中元素个数是否为0package com.collection; import java.util.HashMap; import java.util.Map; public class MapTest { public static void main(String[] args) { // 创建Map集合对象 Map<Integer, String> map = new HashMap<>(); // 1. 向Map集合中添加键值对 map.put(1, "zhangsan"); // 1在这里进行了自动装箱操作 map.put(2, "lisi"); // 7. 判断Map集合中元素个数是否为0 System.out.println(map.isEmpty()); // output: false map.clear(); System.out.println(map.isEmpty()); // output: true } }
-
Set<K> keySet()
:获取Map集合中所有的keypackage com.collection; import java.util.*; public class MapTest { public static void main(String[] args) { // 创建Map集合对象 Map<Integer, String> map = new HashMap<>(); // 1. 向Map集合中添加键值对 map.put(1, "zhangsan"); // 1在这里进行了自动装箱操作 map.put(2, "lisi"); // 8. 获取Map集合中所有的key Set<Integer> s = map.keySet(); for (Integer key : s) { System.out.println(key); } } } // output: // 1 // 2
-
V remove(Object key)
:通过key删除键值对package com.collection; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Set; public class MapTest { public static void main(String[] args) { // 创建Map集合对象 Map<Integer, String> map = new HashMap<>(); // 1. 向Map集合中添加键值对 map.put(1, "zhangsan"); // 1在这里进行了自动装箱操作 map.put(2, "lisi"); // 9. 通过key删除键值对 map.remove(1); System.out.println(map.containsKey(1)); // output: false System.out.println(map.containsValue("zhangsan")); // output: false } }
-
Collection<V> values()
:获取Map集合中所有的value,返回一个Collectionpackage com.collection; import java.util.*; public class MapTest { public static void main(String[] args) { // 创建Map集合对象 Map<Integer, String> map = new HashMap<>(); // 1. 向Map集合中添加键值对 map.put(1, "zhangsan"); // 1在这里进行了自动装箱操作 map.put(2, "lisi"); // 10. 获取Map集合中所有的value,返回一个Collection Collection<String> c = map.values(); for (String value : c) { System.out.println(value); } } } // output: // zhangsan // lisi
-
Set<Map.Entry<K,V>> entrySet()
:将Map集合转换成Set集合【注意:Map集合通过entrySet()方法转换成的Set集合,Set集合中元素的类型是Map.Entry<K,V>,是Map集合中的静态内部类】package com.collection; import java.util.*; public class MapTest { public static void main(String[] args) { // 创建Map集合对象 Map<Integer, String> map = new HashMap<>(); // 1. 向Map集合中添加键值对 map.put(1, "zhangsan"); // 1在这里进行了自动装箱操作 map.put(2, "lisi"); // 10. 将Map集合转换成Set集合 Set<Map.Entry<Integer, String>> s = map.entrySet(); // 10.1 遍历Set集合,每次取出一个Node // (1) 迭代器 Iterator<Map.Entry<Integer, String>> it = s.iterator(); while(it.hasNext()) { Map.Entry<Integer, String> node = it.next(); Integer key = node.getKey(); String value = node.getValue(); System.out.println(key); System.out.println(value); System.out.println(node); } // (2) foreach【效率更高】 for (Map.Entry<Integer, String> node : s) { Integer key = node.getKey(); String value = node.getValue(); System.out.println(key); System.out.println(value); System.out.println(node); } } } // output: // 1 // zhangsan // 1=zhangsan // 2 // lisi // 2=lisi
-
遍历Map元素。利用
entrySet()
和Iterator
。Map<Integer, Integer> map = new HashMap<>(); Iterator iterator = map.entrySet().iterator(); while (iterator.hasNext()) { System.out.println(iterator.next()); }