Map集合
概述
认识Map集合
- Map集合称为双列集合,格式:{key1=value1,key2=value2,key3=value3,...),一次需要存一对数据做为一个元素
- Map集合的每个元素“key=value”称为一个键值对/键值对对象/一个Entry对象,Map集合也被叫做“键值对集合”
- Map集合的所有键是不允许重复的,但值可以重复,键和值是一一对应的,每一个键只能找到自己对应的值
在什么情形下使用
- 需要存储一一对应的数据时,就可以考虑使用Map集合来做。
例如在购物车中,每一件商品就是一个键,商品的购买数量就是对应的值;
{ 商品1 = 2,商品2 = 3,商品3 = 2,商品4 = 3 },就代表着商品1购买了两件,商品2购买了三件依此类推。
Map集合体系
Map集合体系的特点
注意:Map系列集合的特点都是由键决定的,值只是一个附属品,值是不做要求的。
- HashMap(由键决定特点):无序、不重复、无索引;(用的最多)
- LinkedHashMap(由键决定特点):由键决定的特点:有序、不重复、无索引。
- TreeMap(由键决定特点):按照大小默认升序排序、不重复、无索引。
代码演示
import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; import java.util.TreeMap; public class MapTest1 { public static void main(String[] args){ Map<String,Integer> map1 = new HashMap<>(); //一行经典代码。 按照键 无序,不重复,无索引 Map<String,Integer> map2 = new LinkedHashMap<>(); //有序,不重复,无索引 map1.put("手表",100); map1.put("手表",220); map1.put("手机",2); map1.put("Java",2); map1.put(null,null); map2.put("手表",100); map2.put("手表",220); map2.put("手机",2); map2.put("Java",2); map2.put(null,null); System.out.println("(HashMap) map1:" + map1); System.out.println("(LinkHashMap) map2:" + map2); Map<Integer,String> map3 = new TreeMap<>(); //可排序,不重复,无索引 map3.put(23,"Java"); map3.put(23,"MySQL"); map3.put(19,"李四"); map3.put(20,"王五"); System.out.println("(TreeMap) map3:" + map3); } }
运行结果:
常用方法
为什么要先学习Map的常用方法?
- 与Collection集合一样,Map是双列集合的祖宗,它的功能是全部双列集合都可以继承过来使用的。
添加元素 (无序,不重复,无索引)
import java.util.HashMap; import java.util.LinkedHashMap; import java.util.Map; public class MapTest2 { public static void main(String[] args) { Map<String,Integer> map = new HashMap<>(); map.put("手表",100); map.put("手表",220); map.put("手机",2); map.put("Java",2); map.put(null,null); System.out.println(map); } }
运行结果:
获取集合的大小&清空集合&判断集合是否为空
运行结果:
根据键获取对应值&根据键删除整个元素(删除键会返回键的值)
运行结果:
判断是否包含某个键&判断是否包含某个值
运行结果:
获取Map集合的全部值&把其他Map集合的数据倒入自己集合中来
运行结果:
END