Java学习第十七天--Map
作用:存储一组数据类型相同的数
特点:
存储的方式是以键值对的形式存储格式为:
键: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相关推荐
- 黑马程序员--Java学习日记之集合(map集合和collections类)
-- Java培训.Android培训.iOS培训..Net培训.期待与您交流! --- 一.概述 将键映射到值的对象.一个映射不能包含重复的键:每个键最多只能映射到一个值. 在使用Collec ...
- Java学习笔记24(Map集合)
Map接口: Map接口与Collection接口无继承关系. 区别:Collection中的元素是孤立的,一个一个存进去的. Map作为一个映射集合,每一个元素包含Key-value对(键-值对). ...
- Java学习笔记day18-红黑树-Map
Day18 红黑树 平衡二叉B树 每一个节点可以是红或者黑 红黑树不是高度平衡的,它的平衡是通过"自己的红黑规则"实现的 红黑规则 每一个节点或是红色的,或是黑色的 根节点必须是黑 ...
- Java学习笔记十七——集合类详细总结各自对比
Java编程基础倒数第三篇,感谢没有放弃的自己. 学习笔记参考书籍<Java编程基础>主编 张焕生.本书内容比较适合没有什么基础的入门小白,学完一章还有习题,比较适合初学者. 自律.积极. ...
- Java学习笔记-Pair和Map
pair用法:介绍java中Pair_梦想画家的博客-CSDN博客_java pair 共通点:Pair和Map都是以key,value进行存储 不同点: Pair通过getKey()/getValu ...
- Java学习第二十七天<面向对象综合练习><猜拳游戏>
面向对象综合练习 找最大值 package chapter06.D10综合练习; //找最大值 public class Homework01 {public static void main(Str ...
- Java学习系列(十七)Java面向对象之开发聊天工具
TCP通信: Socket --相当于"虚拟链路两端的插座".Socket负责完成通信. ServerSocket --它只负责"接收"连接.它用于产生Sock ...
- Java学习系列及数据结构博客全目录
Java学习系列 Java学习系列(一)Java的运行机制.JDK的安装配置及常用命令详解 Java学习系列(二)Java注释.标识符.基本数据类型及其转换易错点详解 Java学习系列(三)Java运 ...
- java学习记录十五:集合二Collections、Set、Map
java学习记录十五:集合二 一.Collections工具类 一.解释 二.常用方法 1.打乱集合顺序 2.按照默认规则排序 3.按指定规则排序 4.批量添加元素 二.可变参数 一.解释 二.写法 ...
最新文章
- 【高并发】Redis如何助力高并发秒杀系统?看完这篇我彻底懂了!!
- html设置字体整体放大,请教怎么样可以只放大或缩小内容层里的字体呢?我不想让整页都放大缩小。请指教!谢谢!_html/css_WEB-ITnose...
- parameter乱码提交的问题
- python 学习5--matplotlib画图实践
- SAP OData service的执行是如何从Gateway系统转交到backend系统
- 史上最容易理解————GET和POST两种基本请求方法的区别
- php报错提醒,php报错问题
- 如果是自学WEB前端的话,该如何才能找到一份7K实习生工作呢?
- 可以单独打开anaconda中的python莫?_Python入门必备,大数据,人工智能编程必备软件-Anaconda...
- sql server权限_保护SQL Server审核的访问权限
- Python解压压缩包
- day_44_Django
- 堆排序(java实现)
- H3C交换机配置常用命令
- android颜色透明度换算详解
- Windows图片和传真查看器打开图片慢
- 服务器主板用什么芯片,C610芯片服务器主板用什么机箱好?
- 评价页面html代码,HTML5 评论列表界面模板
- 几个shape格式、tiff格式地图免费下载网站
- 访问学者申请德国签证需提供护照吗?需注意些什么?