Map学习笔记
Map集合
Map集合常见方法
V put (K Key,V value) 添加元素
V remove (Object key) 根据键移除键值对元素
void clear() 移除所有的键值对元素
boolean containsKey(Object key) 判断集合中是否包含指定的键
boolean containsValue (Object value) 判断集合中是否包含指定的值
boolean isEmpty() 判断集合是否为空
int size() 判断集合的长度,也就是集合中键值对的个数
重要!!!
第一个添加元素 put 包含添加以及覆盖,那么什么时候是添加?什么时候是覆盖?
- 在添加数据的时候,如果键不存在,那么直接把键值对对象添加到 map 结合中,方法返回 null
- 在添加数据的时候,如果键是存在的,那么会把原有的键值对对象覆盖,把覆盖后的值进行返回
以上常见方法的代码表示
package Map;import java.util.HashMap;
import java.util.Map;public class A01 {//添加元素public static void main1(String[] args) {//1、创建Map集合的对象Map<String,String> m = new HashMap<>();//2、添加元素/*put方法的细节* 添加和覆盖* 在添加数据的时候,如果键不存在,那么直接把键值对对象添加到map结合中,方法返回null* 在添加数据的时候,如果键是存在的,那么会把原有的键值对对象覆盖,把覆盖后的值进行返回*/String value1 = m.put("1", "one");System.out.println(value1);m.put("2","two");m.put("3","three");String value2 = m.put("2", "zhangsan");System.out.println(value2);//3、打印输出System.out.println(m);}//删除操作public static void main2(String[] args) {Map<String,String> m = new HashMap<>();m.put("1", "one");m.put("2", "two");m.put("3", "three");String result = m.remove("2");System.out.println(result);System.out.println(m);}//移除所有的键值对元素public static void main3(String[] args) {Map<String,String> m = new HashMap<>();m.put("1", "one");m.put("2", "two");m.put("3", "three");m.clear(); //调用clean方法System.out.println(m);}//判断是否包含public static void main4(String[] args) {Map<String,String> m = new HashMap<>();m.put("1", "one");m.put("2", "two");m.put("3", "three");boolean keyResult = m.containsKey("1"); //判断System.out.println(keyResult); //true 表示键存在System.out.println(m);}//判断是否包含指定的值public static void main5(String[] args) {Map<String,String> m = new HashMap<>();m.put("1", "one");m.put("2", "two");m.put("3", "three");boolean valueResult = m.containsValue("four");System.out.println(valueResult);System.out.println(m);}//判断集合是否为空public static void main6(String[] args) {Map<String,String> m = new HashMap<>();m.put("1", "one");m.put("2", "two");m.put("3", "three");boolean empty = m.isEmpty();System.out.println(empty);System.out.println(m);}//获取集合的长度public static void main7(String[] args) {Map<String,String> m = new HashMap<>();m.put("1", "one");m.put("2", "two");m.put("3", "three");int size = m.size();System.out.println(size);System.out.println(m);}
}
Map集合的遍历方式
第一种:键找值
思想:获取到集合的键再通过键来一一找对应的值。
代码表示
package Map;import java.util.HashMap;
import java.util.Map;
import java.util.Set;/*Map集合的第一种遍历方式* 键找值!*/
public class A02 {public static void main(String[] args) {//1、创建Map集合的对象Map<String, String> m = new HashMap<>();//2、添加元素m.put("1", "one");m.put("2", "two");m.put("3", "three");//3、通过键找值//3.1、获取所有的键,把这些键放在一个单列集合当中Set<String> keys = m.keySet();//3.2、遍历所有的键for (String key : keys) {//System.out.println(key); // 打印输出键//4、根据键获取对应的值String value = m.get(key); //get方法System.out.println(key + "=" + value);}}
}
第二种:键值对
思想:首先调用 entrySet 方法获取每一个键值对,然后通过 getKey() 获取每一个键,通过 getValue() 获取每一个值。
代码表示
package Map;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class A03 {public static void main(String[] args) {// 1、创建一个Map集合Map<String, String> map = new HashMap<>();// 2、添加元素,键是数字、值是姓名map.put("1", "张三");map.put("2", "李四");map.put("3", "王五");map.put("4", "赵六");map.put("5", "孙七");// 3、通过遍历获取元素//3.1 调用Map接口的entrySet方法,获取Set集合,包括Map的所有键值对Set<Map.Entry<String, String>> entries = map.entrySet();//3.2 使用增强for循环遍历entries集合,获取每一个键值对对象for (Map.Entry<String, String> entry : entries) {//3.3调用get方法获取键和值String key = entry.getKey(); //获取键keyString value = entry.getValue(); //获取值valueSystem.out.println(key + "=" + value);}}
}
第三种:利用lambda表达式来遍历
思想:调用方法 forEach() 在方法里结合 lambda 表达式来调用。
底层:forEach 其实就是利用第二种方式进行遍历,依次得到每一个键和值,再调用 accept 方法。
代码表示
package Map;import java.util.HashMap;
import java.util.function.BiConsumer;public class A04 {public static void main(String[] args) {HashMap<String, String> m = new HashMap<>();m.put("鲁迅", "这句话是我说的");m.put("曹操", "不可能绝对不可能");m.put("刘备", "接着奏乐接着舞");m.put("小王", "打工仔!");//利用lambda表达式来遍历/*底层* forEach其实就是利用第二种方式进行遍历,依次得到每一个键和值* 再调用accept方法*/m.forEach(new BiConsumer<String, String>() {@Overridepublic void accept(String key, String value) {System.out.println(key + "=" + value);}});System.out.println("-----------------------");m.forEach((String key, String value) -> {System.out.println(key + "=" + value);});System.out.println("-----------------------");m.forEach((key, value) -> System.out.println(key + "=" + value));}
}