Map集合体系

Map集合概述

Map集合是一种 双列集合 每个元素包含两个数据
Map集合的每个元素格式: key = value (键值对元素)
Map集合也被称为 "键值对集合"

Map集合整体格式

  • Collection集合的格式:[元素1,元素2,元素3,…]
  • Map集合的完整格式:{key1=value1,key2=value2,key3=value3,…}

javascrip map文件 java中map格式_System

Map集合的使用场景:购物车系统

javascrip map文件 java中map格式_servlet_02

分析

  • 购物车提供的商品和购买数量在后台需要容器存储
  • 每个商品对象都一一对应一个购买数量
  • 把每个商品对象看成是Map集合的键(key),购买数量看成是Map集合值(value)

{商品1=2,商品2=3,商品3=2,商品4=5,…}

Map集合体系结构

javascrip map文件 java中map格式_javascrip map文件_03

使用最多的Map集合是 HashMap

Map集合体系特点

1.Map集合的特点都是由键决定的
2.Map集合的键是 无序 不重复 无索引的,值可以不做要求
3.Map集合后面重复的键对应的值会覆盖前面重复键的值
4.Map集合的键值对都可以为null

Map集合实现类特点

HashMap:元素按照键 无序 不重复 无索引 值不做要求
Map<String,Integer> map = new HashMap<>();  //键 无序 不重复 无索引 值不做要求

        
        map.put("java",10);
        map.put("特步",4);
        map.put("361",2);
        map.put("匹克",1);
        map.put(null,null);   //集合里面的键值对可以都是null
        map.put("匹克",19);
		
        //  {null=null, 特步=4, java=10, 匹克=19, 361=2}
        System.out.println(map);
LinkedHashMap:元素按照键 有序 不重复 无索引 值不做要求
Map<String,Integer> map = new LinkedHashMap<>();  //键 有序 不重复 无索引 值不做要求

       
        map.put("java",10);
        map.put("特步",4);
        map.put("361",2);
        map.put("匹克",1);
        map.put(null,null);
        map.put("匹克",19);
		
 		//  {java=10, 特步=4, 361=2, 匹克=19, null=null}
        System.out.println(map);
TreeMap:元素按照键 排序 不重复 无索引 值不做要求

Map集合常用API

方法名称

说明

V put(K key,V value)

添加元素

V remove(Object key)

根据键删除键值对元素

void clear()

移除所有的键值对元素

boolean containsKey(Object key)

判断集合是否包含指定的键

boolean containsValue(Object value)

判断集合是否包含指定的值

boolean isEmpty()

判断集合是否为空

int size()

集合的长度,也就是集合中键值对的个数

Map<String,Integer> map = new HashMap<>();

        map.put("小米",2999);
        map.put("华为",4999);
        map.put("荣耀",3999);
        map.put("oppo",3699);
        map.put("一加",3899);
        map.put("苹果",7999);

        //  {苹果=7999, oppo=3699, 华为=4999, 一加=3899, 荣耀=3999, 小米=2999}
        System.out.println(map);

        //2.清空集合
        /*map.clear();
        System.out.println(map);*/

        //3.判断集合是否为空 为空返回true 反之false
        System.out.println(map.isEmpty());

        //4.根据键获取对应的值 : public V get(Object key)
        System.out.println(map.get("小米"));  // 2999

        //5.根据键删除整个元素  (删除键会返回键的值)
        Integer i = map.remove("苹果");
        System.out.println(i);      // 7999

        //6.判断是否包含某个键
        System.out.println(map.containsKey("华为"));  //true

        //7.判断是否包含某个值
        System.out.println(map.containsValue(100));  //true

        //   [oppo, 华为, 一加, 荣耀, 小米]
        //8.获取全部键的集合 public Set<K> keySet()
        Set<String> strings = map.keySet();
        System.out.println(strings);

        //9.获取全部值的集合 Collectio<V> values();
        Collection<Integer> values = map.values();
        System.out.println(values);

        //10.集合的大小
        System.out.println(map.size());  // 5