当前位置: 首页 > news >正文

Map集合体系——遍历,HashMap,TreeMap,LikedHashMap

 认识Map集合

 Map集合体系特点

方法

代码示例

package com.zz.Map;import java.util.*;public class Test {public static void main(String args[]){Map<String, Integer> map = new HashMap <>();//经典代码,按照键 无序 不重复 无索引map.put("手表", 100);map.put("手表", 134);//后面重复的数据会覆盖前面的数据(键)map.put("手机", 243);System.out.println(map);System.out.println("=====");Map<Integer, String> map1 = new TreeMap <>();//可排序,不重复,无索引map1.put(23, "java");map1.put(400, "cat");map1.put(35, "dog");System.out.println(map1);//2.public int size()获取集合的大小System.out.println(map.size());//3.public void clear()清空集合//map.clear();System.out.println(map);//4.public boolean isEmpty():判断集合是否为空,为空则返回true,反之System.out.println(map.isEmpty());//5.public V get(Object key)根据键获取对应值,不存在该键,则返回nullint v1 = map.get("手表");System.out.println(v1);//6.public V remove(Object key)根据键删除整个元素(删除键会返回键的值)System.out.println(map.remove("手表"));System.out.println(map);//7.public boolean containsKey(Object key)判断是否包含某个键,为真返回true,否则返回falseSystem.out.println(map.containsKey("手机"));//trueSystem.out.println(map.containsKey("手表"));//false//8.public boolean containsValue(Object value):判断是否包含某个值System.out.println(map.containsValue(2));//falseSystem.out.println(map.containsValue(243));//true//9.public Set<K> keySet():获取Map集合的全部键Set<String> keys = map.keySet();System.out.println(keys);//10.public Collection<V> values():获取Map集合的全部值Collection<Integer> values = map.values();System.out.println(values);//11.把其他Map集合的数据全部导入到自己的集合中来(扩展)Map<String, Integer> map2 = new HashMap <>();map2.put("java", 10);map2.put("操作系统", 20);Map<String, Integer> map3 = new HashMap <>();map3.put("数据库", 12);map3.put("计算机组成原理", 89);map2.putAll(map3);//putAll 把map3中的元素全部导入一份到map2集合中System.out.println(map2);System.out.println(map3);}
}

遍历

方式一:键找值 

package com.zz.Map.Map;import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class Test2 {public static void main(String args[]){//准备一个Map集合Map<String, Double> map = new HashMap<>();map.put("牛魔王", 187.4);map.put("铁扇公主", 170.4);map.put("孙悟空", 156.7);map.put("唐僧", 179.4);System.out.println(map);//获取所有键Set<String> keys = map.keySet();System.out.println(keys);//根据键获取对应值for(String key : keys){double value = map.get(key);System.out.println(key + "=>" + value);}}
}

方式二:键值对

 

 //2.调用Map集合提供entrySet方法,把Map集合转换成键值对类型的Set集合Set<Map.Entry<String, Double>> entries = map.entrySet();for(Map.Entry<String, Double> entry : entries){String key = entry.getKey();double value = entry.getValue();System.out.println(key + "=>" + value);}

方式三:Lambda(推荐)JDK8才开始有

 //方式三Lambda遍历map.forEach((k, v)->{System.out.println(k + "->" + v);});
上面Lambda的原本代码形式 
 map.forEach(new BiConsumer <String, Double>() {@Overridepublic void accept(String k, Double v) {System.out.println(k + "=>" + v);}});

Map集合案例

 Map集合投票统计代码示例

package com.zz.Map.vote;import java.util.*;public class Test {public static void main(String args[]){//1.将80个学生选择的景点数据拿到程序中来List<String> data = new ArrayList <>();String[] selects = {"A", "B", "C", "D"};Random r = new Random();for(int i = 1; i <= 80; i++){//每次模拟一个学生选择一个景点,存入到集合中去int index = r.nextInt(4);//0,1,2,3data.add(selects[index]);}System.out.println(data);//2.开始统计每个景点的投票人数//准备一个Map集合用于统计最终的结果Map<String, Integer> result = new HashMap<>();//3.开始遍历学生选择的景点数据for (String s : data){//判断该Map集合中是否存在该景点if(result.containsKey(s)){//说明这个景点之前统计过,其值+1,存入到Map集合中result.put(s, result.get(s) + 1);}else{//说明这个景点未被统计过,存入(景点=1)result.put(s, 1);}}System.out.println(result);}
}

HashMap

根据键的哈希值计算位置,和值无关

 

LinkedHashMap集合

将键:值封装成entry对象

TreeMap集合

集合的嵌套

一个集合中嵌套另外一个集合

package com.zz.Map.province;import java.util.*;public class Test {public static void main(String args[]){//1.定义一个Map集合存储全部的省份信息,其对应的城市信息Map<String, List<String>> map = new HashMap<>();List<String> cities1 = new ArrayList <>();Collections.addAll(cities1, "南京市", "苏州市", "扬州市");map.put("江苏省", cities1);List<String> cities2 = new ArrayList <>();Collections.addAll(cities2, "抚州市", "南昌市", "九江市");map.put("江西省", cities2);System.out.println(map);//获取对应省份的城市信息List<String> list = map.get("江西省");for (String city : list) {System.out.println(city);}//获取所有省份对应的城市信息map.forEach((p, c)->{System.out.println(p + "=>" + c);});}
}

http://www.lryc.cn/news/312425.html

相关文章:

  • docker mysql主从复制
  • iOS 自动化测试踩坑(一): 技术方案、环境配置与落地实践
  • Redis的事务
  • 4.2 比多数opencv函数效果更好的二值化(python)
  • webpack打包一个文件,做了哪些事情
  • 设计模式学习笔记 - 设计原则 - 6.KISS原则和YAGNI原则
  • 【Vue3-vite】动态导入路由
  • C++——string类
  • 进制转换md5绕过 [安洵杯 2019]easy_web1
  • .kat6.l6st6r勒索病毒的最新威胁:如何恢复您的数据?
  • Day 6.有名信号量(信号灯)、网络的相关概念和发端
  • MySQL 常用优化方式
  • 算法刷题day22:双指针
  • 山人求道篇:八、模型的偏差与交易认知
  • MySQL 元数据锁及问题排查(Metadata Locks MDL)
  • JS中的函数
  • 微信小程序开发常用的布局
  • Effective C++ 学习笔记 条款10 令operator=返回一个reference to *this
  • 算法简单试题
  • CSS 自测题 -- 用 flex 布局绘制骰子(一、二、三【含斜三点】、四、五、六点)
  • 蓝桥集训之牛的学术圈 I
  • 软件设计师软考题目解析21 --每日五题
  • python读写json文件详解
  • #include<ros/ros.h>头文件报错
  • mybatis单表curd笔记(尚硅谷
  • 在线重定义-操作步骤
  • 16:00面试,16:06就出来了,问的问题过于变态了。。。
  • 基于dashscope在线调用千问大模型
  • 【Python】可变数据类型 不可变数据类型 || hash
  • MySQL 篇-深入了解多表设计、多表查询