集合-Map 接口
1. 概述
java.util.Map <K,V>接口是一个顶层接口,里面存放的数据单元是:单对元素;
- K 表示 描述的键 的类型,Key 的类型;
- V 表示 描述的值 的类型,Value的类型;
- Map就是用于存放 Key-Value 键值对 的集合;
- Map集合中,Key不允许重复,并且 一个Key只能对应一个Value;
Map接口的主要实现类:
HashMap类 (哈希表数据结构)
TreeMap类 (红黑树)
2. 常用方法
Map <K,V>
V put(K key, V value) -将参数指定的key 和 value组成一个完整键值对,放入集合。
- 若集合中之前没有该key值,则返回null。
-否则返回之前key值对应的value值。
V remove(Object key) -删除参数指定key对应的键值对,返回key对应的value值
boolean containsKey(Object key) -用于判断参数指定的key值是否存在
boolean containsValue(Object value) -用于判断参数指定的value是否存在
V get(Object key) -用于获取参数key对应的value值
Set<Map.Entry<K, V>> entrySet( ) -用于获取Map集合的Set视图
K getKey( ) -用于获取调用对象的key值
V getValue( ) -用于获取调用对象的value值
Set<K> keySet( ) -获取Map集合中 key的Set视图
代码:
package com.monkey1024.map; import java.util.HashMap; import java.util.Map; import java.util.Map.Entry; import java.util.Set; public class MapTest { public static void main(String[] args) { // 定义一个接口类型的引用指向 实现类的对象,形成多态 Map<String,String> m1=new HashMap<String,String> (); //操作1: 向集合中添加元素 String val = m1.put("1", "one"); System.out.println("1.向集合中添加元素(\"1\", \"one\"): "+val); //null val=m1.put("2", "two"); System.out.println("1.向集合中添加元素(\"2\", \"two\"): "+val); //null val=m1.put("3", "three"); System.out.println("1.向集合中添加元素(\"3\", \"three\"): "+val); //null System.out.println(); // 操作2:若键值对已经存在,相当于修改value的效果 val= m1.put("1", "eleven"); System.out.println("2.向集合中添加元素(\"1\", \"eleven\")"); System.out.println("若键值对已经存在,否则返回之前key值对应的value值"); System.out.println("打印value值: "+val); System.out.println(); // 操作3:判断key值为 "1"的元素 是否存在 boolean b = m1.containsKey("1"); System.out.println("3.判断key值为 \"1\"的元素 是否存在: "+b); System.out.println(); // 操作4:判断value值为 "two"的元素 是否存在 b = m1.containsValue("two"); System.out.println("4.判断value值为 \"two\"的元素 是否存在: " +b); System.out.println(); // 操作5:获取 key值为 "3",对应的 value值 String str = m1.get("3"); System.out.println("5.获取 key值为 \"3\",对应的 value值: "+str); System.out.println(); // 操作6: 删除key值为"3"元素对应的值 String remove = m1.remove("3"); System.out.println("6.删除key值为\"3\"元素对应的值: "+remove); System.out.println(); // 操作7: 将Map转换为 Set,得到 Set的视图 Set<Map.Entry<String, String>> s1 = m1.entrySet(); System.out.println("7.将Map转换为 Set,得到 Set的视图: "+s1); System.out.println(); // 操作8:打印Set视图 中的每一个元素的 key 和 value for(Map.Entry<String, String> me:s1) { System.out.println("8.将Map转换为 Set,得到 Set的视图: "+me.getKey()+","+me.getValue()); } System.out.println( ); // 操作9: 获取map中的key组成的Set视图 Set<String> s2 = m1.keySet(); System.out.println("9.获取map中的key组成的Set视图: "+s2); System.out.println(); // 操作10:打印集合中的所有key 和 value for(String s:s2) { System.out.println("10.打印集合中的所有key 和 value: "+s+","+m1.get(s)); } } }
结果:
1.向集合中添加元素("1", "one"): null 1.向集合中添加元素("2", "two"): null 1.向集合中添加元素("3", "three"): null 2.向集合中添加元素("1", "eleven") 若键值对已经存在,否则返回之前key值对应的value值 打印value值: one 3.判断key值为 "1"的元素 是否存在: true 4.判断value值为 "two"的元素 是否存在: true 5.获取 key值为 "3",对应的 value值: three 6.删除key值为"3"元素对应的值: three 7.将Map转换为 Set,得到 Set的视图: [1=eleven, 2=two] 8.将Map转换为 Set,得到 Set的视图: 1,eleven 8.将Map转换为 Set,得到 Set的视图: 2,two 9.获取map中的key组成的Set视图: [1, 2] 10.打印集合中的所有key 和 value: 1,eleven 10.打印集合中的所有key 和 value: 2,two