作用:存储一组数据类型相同的数

特点:

存储的方式是以键值对的形式存储格式为:

键:key

值:value

Map
        HashMap
                K的数据结构:红黑树(二叉树)+哈希表
                特点:
                        线程不安全的
                        JDK1.2
                        允许null作为键或值
        HashTable
                K的数据结构:红黑树(二叉树)+哈希表
                特点:
                        线程安全的
                        JDK1.0
                        不允许null作为键或值
        TreeMap
                K的数据结构:红黑树(二叉树)+自定义比较
        注意:
                key对应的数据类型要么拥有比较性,要么在创建TreeMap时指定比较器
        Properties
                注意:后期在配置文件读写中使用,其本质就是一个Map,所以拿到该对象后,Map对象如何操作他就如何操作
                注意:
                        key不能重复
                        如果Map中已经存在该key,那么本次存储的值将会替换原有的值

Map不能自己创建对象,须由它的子类 HashTable TreeTable HashMap来创建

Map中的方法(所有子类公用,子类无特殊方法):

增:
        V put(K k,V v):添加一个键值对
        注意:
                如果本次添加的键值对中键不在当前map中存在,返回值为null
                如果本次添加的键值对中键在当前map中存在,返回值为key原来对应的Value
                如果本次添加的键值对中键在当前map中存在,会替换原有的值
        void putAll(Map<? extends K, ? extends V> m):添加多个键值对

删:
        V remove(Object key):根据key删除对应的键值对象
        注意:
                1,返回值为被删除键值对中的值
                2,如果删除的key在map中不存在,则删除失败,返回值为null
        boolean remove(Object key, Object value):根据key与value删除对应的键值
        注意:
                1,要求key与value必须同时与map中的某一个键值对象相同,才可以删除
                2,返回值为是否删除成功
        void clear():清空

改:
        V put(K k,V v):修改一个键值对
        注意:key在map存在就是修改,不存在就是添加

查:
        int size();查询map中键值对的个数(map的长度)
        boolean containsKey(Object key):判断当前map是否存在该key
        boolean containsValue(Object value):判断当前map是否存在该value
        Set<Map.Entry<K, V>> entrySet():获取当前map中所有键值对的集合
                Entry:键值对
        getKey():获取该键值的key
        getVlue():获取该键值的Value
        V get(Object key):通过key获取对应的value
        V getOrDefault(Object key, V defaultValue):通过key获取对应的value
                key:键
                defaultValue:默认值
                注意:如果键不存在,那么返回值为默认值,如果键存在,返回值键对应的值
        boolean isEmpty():判断当前map是否为空
        Set<K> keySet():获取字典中所有key的集合
        Collection<V> values():获取字典中所有值的集合
                注意:不能使用foreach直接遍历map

练习:

/** 使用Map完成王者荣耀助手的案例* 选择分路--选择英雄--推荐装备*/
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
import java.util.Scanner;
import java.util.Set;import javax.swing.Box;public class Demo01 {public static void main(String[] args) {ArrayList<String> zhuangBei01 = new ArrayList<String>();ArrayList<String> zhuangBei02 = new ArrayList<String>();ArrayList<String> zhuangBei03 = new ArrayList<String>();ArrayList<String> zhuangBei04 = new ArrayList<String>();Map<String, ArrayList<String>> yingXiong01 = new HashMap();Map<String, ArrayList<String>> yingXiong02 = new HashMap();Map<String, ArrayList<String>> yingXiong03 = new HashMap();Map<String, ArrayList<String>> yingXiong04 = new HashMap();Map<String, Map<String, ArrayList<String>>> box = new HashMap<String, Map<String, ArrayList<String>>>();//HashMap<String, Map<String, Map<String, ArrayList<String>>>> box = new HashMap<String, Map<String, Map<String, ArrayList<String>>>>();Collections.addAll(zhuangBei01, "攻速鞋","电刀","无尽","破晓","破军","吸血");Collections.addAll(zhuangBei02, "抵抗鞋","奔狼","极寒风暴","痛苦面具","魔女斗篷","霸者重装");Collections.addAll(zhuangBei03, "攻速鞋","无尽","吸血刀","蝶刃","破晓","电刀");Collections.addAll(zhuangBei04, "抵抗鞋","吸血书","回响之杖","帽子","法穿棒","金身");//Collections.addAll(yingXiong, "鲁班七号","鲁班大师","伽罗","不知火舞","娜可露露");yingXiong01.put("鲁班七号", zhuangBei01);yingXiong02.put("鲁班大师", zhuangBei02);yingXiong01.put("伽罗", zhuangBei03);yingXiong04.put("不知火舞", zhuangBei04);box.put("上路", yingXiong03);box.put("中路", yingXiong04);box.put("下路", yingXiong01);box.put("辅助", yingXiong02);System.out.println("欢迎来到王者荣耀助手");System.out.println("请选择你的分路");Set<String> fenLu = box.keySet();for (String lu : fenLu) {System.out.println(lu);}System.out.println("请输入你要选择的分路");Scanner scanner = new Scanner(System.in);String lu = scanner.next();if (box.containsKey(lu)) {Map<String, ArrayList<String>> yingXiong = box.get(lu);Set<String> hero = yingXiong.keySet();for (String string : hero) {System.out.println(string);}System.out.println("请选择你选的英雄");String yx = scanner.next();if (yingXiong.containsKey(yx)) {System.out.println("选择成功,你选择"+yx);ArrayList<String> zhuangBei = yingXiong.get(yx);System.out.println("推荐的装备是:"+zhuangBei);}else {System.out.println("所选英雄不存在");}}else {System.out.println("输入错误");}}}

Java学习第十七天--Map相关推荐

  1. 黑马程序员--Java学习日记之集合(map集合和collections类)

    -- Java培训.Android培训.iOS培训..Net培训.期待与您交流! ---  一.概述 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 在使用Collec ...

  2. Java学习笔记24(Map集合)

    Map接口: Map接口与Collection接口无继承关系. 区别:Collection中的元素是孤立的,一个一个存进去的. Map作为一个映射集合,每一个元素包含Key-value对(键-值对). ...

  3. Java学习笔记day18-红黑树-Map

    Day18 红黑树 平衡二叉B树 每一个节点可以是红或者黑 红黑树不是高度平衡的,它的平衡是通过"自己的红黑规则"实现的 红黑规则 每一个节点或是红色的,或是黑色的 根节点必须是黑 ...

  4. Java学习笔记十七——集合类详细总结各自对比

    Java编程基础倒数第三篇,感谢没有放弃的自己. 学习笔记参考书籍<Java编程基础>主编 张焕生.本书内容比较适合没有什么基础的入门小白,学完一章还有习题,比较适合初学者. 自律.积极. ...

  5. Java学习笔记-Pair和Map

    pair用法:介绍java中Pair_梦想画家的博客-CSDN博客_java pair 共通点:Pair和Map都是以key,value进行存储 不同点: Pair通过getKey()/getValu ...

  6. Java学习第二十七天<面向对象综合练习><猜拳游戏>

    面向对象综合练习 找最大值 package chapter06.D10综合练习; //找最大值 public class Homework01 {public static void main(Str ...

  7. Java学习系列(十七)Java面向对象之开发聊天工具

    TCP通信: Socket --相当于"虚拟链路两端的插座".Socket负责完成通信. ServerSocket --它只负责"接收"连接.它用于产生Sock ...

  8. Java学习系列及数据结构博客全目录

    Java学习系列 Java学习系列(一)Java的运行机制.JDK的安装配置及常用命令详解 Java学习系列(二)Java注释.标识符.基本数据类型及其转换易错点详解 Java学习系列(三)Java运 ...

  9. java学习记录十五:集合二Collections、Set、Map

    java学习记录十五:集合二 一.Collections工具类 一.解释 二.常用方法 1.打乱集合顺序 2.按照默认规则排序 3.按指定规则排序 4.批量添加元素 二.可变参数 一.解释 二.写法 ...

最新文章

  1. 【高并发】Redis如何助力高并发秒杀系统?看完这篇我彻底懂了!!
  2. html设置字体整体放大,请教怎么样可以只放大或缩小内容层里的字体呢?我不想让整页都放大缩小。请指教!谢谢!_html/css_WEB-ITnose...
  3. parameter乱码提交的问题
  4. python 学习5--matplotlib画图实践
  5. SAP OData service的执行是如何从Gateway系统转交到backend系统
  6. 史上最容易理解————GET和POST两种基本请求方法的区别
  7. php报错提醒,php报错问题
  8. 如果是自学WEB前端的话,该如何才能找到一份7K实习生工作呢?
  9. 可以单独打开anaconda中的python莫?_Python入门必备,大数据,人工智能编程必备软件-Anaconda...
  10. sql server权限_保护SQL Server审核的访问权限
  11. Python解压压缩包
  12. day_44_Django
  13. 堆排序(java实现)
  14. H3C交换机配置常用命令
  15. android颜色透明度换算详解
  16. Windows图片和传真查看器打开图片慢
  17. 服务器主板用什么芯片,C610芯片服务器主板用什么机箱好?
  18. 评价页面html代码,HTML5 评论列表界面模板
  19. 几个shape格式、tiff格式地图免费下载网站
  20. 访问学者申请德国签证需提供护照吗?需注意些什么?

热门文章

  1. AppStore 隐私政策
  2. 惠普笔记本安装ubuntu18.04没有wifi适配器
  3. Redmine之RestApi集成方式
  4. 同一网段下手机无法ping通电脑上的虚拟机
  5. 程序员在创业前可以尝试的试炼任务
  6. 网站扫描二维码强制关注公众号登录
  7. certutil(certutilexe应用程序错误)
  8. php 获取远程文件mine,使用CertUtil.exe下载远程文件
  9. BUAA Object Oriented Unit 1 Summary
  10. 跨链揭秘:跨链过程中你的资产真的转移了么?