map集合
Map接口时一种双列集合,它的每个元素都包含一个键对象Key和一个值对象Value,键和值对象之间存在一种对应关系,称为映射。
Map集合常用的方法
方法声明 | 功能描述 |
void put(Object key,Object value) |
将指定的值与此映射中的指定键关联(可选操作) |
Object get(Object key) | 返回指定键所映射的值;如果此映射不包含该键的映射关系,则返回null |
boolean containsKey(Object key) | 如果此映射包含指定键的映射关系,则返回true,否则返回false |
boolean containsValue(Object Value) | 如果此映射将一个或多个键映射到指定值,则返回true |
Set keySet() | 返回此映射中包含的键的Set视图 |
Collection<V> values() | 返回此映射中包含的值的Collection视图 |
Set<Map.Entry<K,V>> entrySet() | 返回此映射中包含的映射关系的Set视图 |
表中的方法put(Object key,Object value)和get(Object key)分别用来向Map中存入和取出元素;containsKey(Object key)和containsValue(Object Value)方法分别用于判断Map中是否包含某个指定的键或值;keySet()和values()方法分别用来获取Map中所有的键和值。
Map中常用到的两大实现类,分别是HashMap和TreeMap
常用实现类HashMap
Map集合的其中一个实现类,存储数据特点:键值对,键不能重复
import java.util.HashMap; import java.util.Map; /* * 定义一个测试类 * */ public class Test { public static void main(String[] args) { //创建map对象 Map map = new HashMap(); //给map对象中存入键值对 map.put("1", "jack"); map.put("2", "Rose"); map.put("3", "Lucy"); //取出map集合中存入的键值对 System.out.println("1:"+map.get("1")); System.out.println("2:"+map.get("2")); System.out.println("3:"+map.get("3")); //对键等于3的位置继续存入值 map.put("3", "Nancy"); //Map中的键必须是唯一的,不能重复,如果存入相同键,后存入的值会覆盖原有的值 System.out.println("3:"+map.get("3")); } }
执行结果:键和值关联,根据键找到对应,如果存入相同键:键相同,值覆盖
Map集合遍历之方法一:通过遍历键,然后根据键获取值
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /* * 定义一个测试类 * */ public class Test { public static void main(String[] args) { //创建map对象 Map map = new HashMap(); //给map对象中存入键值对 map.put("1", "jack"); map.put("2", "Rose"); map.put("3", "Lucy"); Set keySet = map.keySet();//获取键的集合 Iterator it = keySet.iterator();//获取键的迭代器对象 while(it.hasNext()){//判断是否有元素 Object key = it.next();//通过next()方法获取键 Object value = map.get(key);//通过键获取对应的值 System.out.println(key+":"+value); } } }
执行结果:根据键取出对应的值
Map集合遍历之方法二:通过映射关系遍历键和值
import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /* * 定义一个测试类 * */ public class Test { public static void main(String[] args) { //创建map对象 Map map = new HashMap(); //给map对象中存入键值对 map.put("1", "jack"); map.put("2", "Rose"); map.put("3", "Lucy"); Set entrySet = map.entrySet();//获取map存入数据的关系存入到Set集合 Iterator it = entrySet.iterator();//调用迭代器遍历entrySet while(it.hasNext()){//判断是否存在值 Map.Entry entry = (Map.Entry)it.next();//获取集合中键值对映射关系 Object key = entry.getKey();//获取Entry中的键 Object value = entry.getValue();//获取Entry中的值 System.out.println(key+":"+value); } } }
执行结果:遍历效果与方法一一致,只是实现的遍历过程不一样
Map集合遍历之方法三:只遍历值
import java.util.Collection; import java.util.HashMap; import java.util.Iterator; import java.util.Map; import java.util.Set; /* * 定义一个测试类 * */ public class Test { public static void main(String[] args) { //创建map对象 Map map = new HashMap(); //给map对象中存入键值对 map.put("1", "jack"); map.put("2", "Rose"); map.put("3", "Lucy"); Collection values = map.values();//调用values获取集合中的所有值 Iterator it = values.iterator();//调用迭代器遍历 while(it.hasNext()){//判断是否有值 Object value = it.next();//获取值 System.out.println(value); } } }
执行结果:打印所有集合中的值
常用实现类TreeMap
Map集合的另一个实现类TreeMap,存储键值对,其中不允许出现重复键,且存入的键是有序的,TreeMap的底层实现是二叉树,通过二叉树的原理来确保键的唯一性和数据的有序性。
import java.util.Iterator; import java.util.Set; import java.util.TreeMap; /* * 定义一个测试类 * */ public class Test { public static void main(String[] args) { //创建map对象 TreeMap tm = new TreeMap(); //给tm对象中存入键值对 tm.put("1", "jack"); tm.put("2", "Rose"); tm.put("3", "Lucy"); Set keySet = tm.keySet();//调用values获取集合中的所有值 Iterator it = keySet.iterator();//调用迭代器遍历 while(it.hasNext()){//判断是否有值 Object key = it.next();//获取值 System.out.println(key+":"+tm.get(key)); } } }
执行结果: