Map接口:

  Map接口与Collection接口无继承关系。

    区别:Collection中的元素是孤立的,一个一个存进去的。

       Map作为一个映射集合,每一个元素包含Key-value对(键-值对)。即,Map元素总是成对出现的。

  Map中的value对象可以重复,但Key不能重复。

  Map接口的常用集合:

  1.HashMap集合,HashMap类与HashSet类基本相同,都是无序的,

  2.LinkedHashMap集合,存储数据是有序的。

Map接口的常用方法:

package Demo2;import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;public class Demo1 {public static void main(String[] args) {function();function1();function2();}private static void function2() {//处理映射中的键/值对组的视图操作HashMap<Integer,String> h=new HashMap<>();h.put(10,"aaa");h.put(20,"bbb");h.put(30,"ccc");h.put(40,"ddd");System.out.println(h);//{20=bbb, 40=ddd, 10=aaa, 30=ccc}Set<Integer> set = h.keySet();//keySet()方法 返回此映射中包含的键的Set视图(即:将该映射中的键都放入 一个Set集合)System.out.println(set);//[20, 40, 10, 30]//values()方法,返回此映射中包含的值的Collection视图。(将该映射中的值都放入一个Collection集合)Collection<String> val = h.values();System.out.println(val);//[bbb, ddd, aaa, ccc]
    }private static void function1() {//查询操作HashMap<String,Integer> h=new HashMap<>();h.put("张三",18);//put(key,value)方法,将指定的value值与此映射中的指定键key关联h.put("李四",20);h.put("小明",22);h.put("小红",26);System.out.println(h);//{李四=20, 张三=18, 小明=22, 小红=26}Integer s = h.get("张三");//get(key)返回指定键key的值,如果此映射不包含该键的映射关系,则返回null。System.out.println(s);//18int size = h.size();//size()返回映射中的键-值关键字(即集合中的元素个数,每一个 键-值 为一个元素)System.out.println(size);//4boolean b = h.containsKey("张三");//containsKey(key)判断映射中是否存在关键字keySystem.out.println(b);//true    containsValue(value) 判断映射中是否存在值value
        h.clear();boolean b1 = h.isEmpty();// 如果此映射不包含键-值映射关系,则返回 true。System.out.println(b1);//true
    }private static void function() {//添加删除操作Map<String,Integer> m=new  HashMap<>();m.put("张三",18);//put(key,value)方法,将指定的value值与此映射中的指定键key关联m.put("李四",20);m.put("小明",22);m.put("小红",24);System.out.println(m);//{李四=20, 张三=18, 小明=22, 小红=24}//输出是无序的m.remove("小明");//remove(key) :如果存在一个映射关系,则将其从此映射中 移除。System.out.println(m);//{李四=20, 张三=18, 小红=24}m.clear();//从此映射中移除所有的映射关系System.out.println(m);//{}
    }
}

Map接口的遍历:

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;public class Demo2 {public static void main(String[] args) {function();function2();}private static void function2() {//增强性for循环Map<Integer,String> h=new HashMap<>();h.put(11,"aa");h.put(22,"bb");h.put(33,"cc");h.put(44,"dd");for (Integer key : h.keySet()) {System.out.println(key+":"+h.get(key));/* 33:cc22:bb11:aa44:dd*/}}private static void function() {//迭代器遍历Map<Integer,String> m=new HashMap<>();m.put(10,"aaa");m.put(20,"bbb");m.put(30,"ccc");m.put(40,"ddd");Set<Integer> set = m.keySet();Iterator<Integer> it = set.iterator();while (it.hasNext()) {Integer key =  it.next();String val = m.get(key);System.out.println(key+":" +val);/*20:bbb40:ddd10:aaa30:ccc*/}}
}

Map第二种遍历方式:Map.Entry接口遍历

import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/*主要用到Entry接口中的entrySet方法来获得映射的Set视图,然后用getKey,getValue方法来获得键和值*/
public class Demo3 {public static void main(String[] args) {function();}private static void function() {//迭代器循环Map<Integer,String> m=new HashMap<>();m.put(10,"aa");m.put(20,"bb");m.put(30,"cc");m.put(40,"dd");Set<Map.Entry<Integer, String>> set = m.entrySet();Iterator<Map.Entry<Integer, String>> it = set.iterator();while (it.hasNext()) {Map.Entry<Integer, String> next =  it.next();Integer key = next.getKey();//getKey返回与此项对应的键String value = next.getValue();//getValue 返回与此项对应的值System.out.println(key+":"+value);}/* 20:bb40:dd10:aa30:cc*/}
}

LinkedHashMap类:

import java.util.LinkedHashMap;public class Demo4 {public static void main(String[] args) {function();}private static void function() {LinkedHashMap<Integer,String> link=new LinkedHashMap<>();link.put(10,"aaa");link.put(20,"bb");link.put(30,"cc");link.put(40,"dd");System.out.println(link);for (Integer key : link.keySet()) {System.out.println(key+":" +link.get(key));}/*  {10=aaa, 20=bb, 30=cc, 40=dd}10:aaa20:bb           结果可以看出是有序的30:cc40:dd*/}
}

综合练习:

  Map嵌套Map:

package Zuoye;import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;public class Demo {public static void main(String[] args) {function1();function2();function3();//增强型for循环遍历嵌套Map
    }private static void function3() {Map<String, Map<Integer, String>> aaa = function();//创建aaa映射的Set视图Set<Map.Entry<String, Map<Integer, String>>> aSet = aaa.entrySet();for (Map.Entry<String, Map<Integer, String>> amap : aSet) {//获得下一个aaa映射对象的键String className = amap.getKey();System.out.println(className);//获得值Map<Integer, String> classInfo = amap.getValue();Set<Map.Entry<Integer, String>> student = classInfo.entrySet();for (Map.Entry<Integer, String> stu : student) {Integer stuNum = stu.getKey();String stuName = stu.getValue();System.out.println(stuNum+":"+stuName);}}}private static void function2() {//调用Map嵌套对象Map<String, Map<Integer, String>> aaa = function();//创建aaa的Set视图对向eMap,通过Entry接口Set<Map.Entry<String, Map<Integer, String>>> eMap = aaa.entrySet();//创建eMop的迭代器对象itIterator<Map.Entry<String, Map<Integer, String>>> it = eMap.iterator();while (it.hasNext()) {//获得下一个元素(Map(Map))对象赋值给classMapMap.Entry<String, Map<Integer, String>> classMap =  it.next();//获得Map(Map)的键,即班级名 ,通过getKey方法String className = classMap.getKey();//获得Map(Map)的值,即(Map)对象赋值给classInfoMap<Integer, String> classInfo = classMap.getValue();//给(map)映射对象创建Set视图,存储学生信息Set<Map.Entry<Integer, String>> stu = classInfo.entrySet();//创建迭代器Iterator<Map.Entry<Integer, String>> itstu = stu.iterator();while (itstu.hasNext()) {//获取下一个学生元素Map.Entry<Integer, String> Student =  itstu.next();//获得学生对象的键Integer key = Student.getKey();//获得学生的值String value = Student.getValue();System.out.println(className+":"+key+":"+value);}}}private static void function1() {//迭代器第一种map循环Map aaa = function();Set set = aaa.keySet();Iterator it = set.iterator();while (it.hasNext()) {Object className =  it.next();System.out.println(className);Map ClassInfo = (Map) aaa.get(className);Set Student = ClassInfo.keySet();Iterator its = Student.iterator();while (its.hasNext()) {Integer StudentNum = (Integer) its.next();String studentName = (String) ClassInfo.get(StudentNum);System.out.println(StudentNum+":"+studentName);/*hoodp班1:许锦迪2:王家宝java班1:朱东阳2:常军凯*/}}}private static Map<String, Map<Integer, String>> function() {//创建Map嵌套Map的对象//创建java班Map集合Map<Integer,String> java=new HashMap<Integer,String>();java.put(001,"朱东阳");java.put(002,"常军凯");//创建hoodp班Map集合Map<Integer,String> hoodp=new HashMap<Integer,String>();hoodp.put(001,"许锦迪");hoodp.put(002,"王家宝");//创建aaaMap集合Map<String,Map<Integer,String>> aaa=new HashMap<String,Map<Integer,String>>();aaa.put("java班",java);aaa.put("hoodp班",hoodp);return aaa;}
}

转载于:https://www.cnblogs.com/Zs-book1/p/10580650.html

Java学习笔记24(Map集合)相关推荐

  1. c++ map 自定义排序_Java学习笔记:Map集合介绍

    在介绍它之前先来看看再API文档中是如何介绍它的,看图片: 由图片可以看出,Map属于双列集合,每次可以添加一对数据,并且这两个数据具有映射关系. 单列集合和双列集合区别 一.Map继承体系 1.Ha ...

  2. Java学习笔记24

    在前面大致讲解了Collection这个根接口的知识,让我们知道Collection接口是List.Set和Queue接口的父接口,该接 口里定义的方法既可用于操作Set集合,也可用于操作List和Q ...

  3. JAVA学习笔记24——SpringBoot

    SpringBoot 微服务架构 把每个功能元素独立出来,把独立出来的功能元素动态组合,需要的功能元素才去拿来组合,需要多一些时可以聚合多个功能元素,所以微服务架构是对功能元素进行复制,而没有对整个应 ...

  4. java学习笔记(十二)----集合

    集合类 集合类用于存储一组对象,其中的每个对象称之为元素,经常会用以的有Vector,Enumeration,ArrayList,Collection,Iterator,Set,List等集合和接口 ...

  5. 【Java学习004】Map集合遍历

    方式1使用Map.Entry进行遍历 在for循环中使用[Map.Entry]对象实现Map对象的遍历. public class Test {public static void main(Stri ...

  6. JAVA学习笔记(二十)- 集合 List

    ArrayList 集合 /** ArrayList,实现List接口* 声明数组时必须指定数组中元素的类型,可以是基本数据类型,也可以是引用数据类型* 声明集合时可以不指定其元素的类型,元素类型默认 ...

  7. Java学习笔记 2021-7-1 2021-7-8

    Java学习笔记 Stream流 1 Stream流的体验 stream流的生成操作 stream中间流操作 filter limit和skip concat和distinct sorted map和 ...

  8. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  9. java学习笔记:全部,txt版本

    java学习笔记:全部,txt版本 笔者注: 1.不知道怎么上传附件,所以就把txt文本内容全部贴在这里吧. 2.已经把txt版本的笔记上传到CSDN了,我没有设置索要积分才能下载,但是不知道为什么C ...

最新文章

  1. 对于5G通信 我们可能都有一点误解
  2. php实现小论坛,PHP开发 小型论坛教程之添加论坛-1
  3. jersey rest webservice
  4. AngularJS分层开发
  5. Delta架构:统一Lambda架构并利用Hadoop / REST中的Storm
  6. 正确认识 Vista 激活期限
  7. eclipse--eclipse(JavaEE版本)部署Tomcat工程(转)
  8. Hystrix面试 - 用 Hystrix 构建高可用服务架构
  9. ASP.NET弹出对话框并跳转页面
  10. Maven私服(一)
  11. 欠采样和过采样_过采样和欠采样
  12. 拼多多卖家必知:店铺评分和评价那点事
  13. cubieboard mysql_【Linux】【笔记】Cubieboard开发板Debian系统+SAMBA共享+远程迅雷Xware+Nginx+PH......
  14. 华硕无线路由打印机服务器,彻底了解WL-500g型的华硕无线网络路由器
  15. Unity3D播放ogv格式的视频
  16. vue倒计时:天时分秒
  17. Helix QAC企业级自动代码静态分析器
  18. 【入门】小明的幸运数
  19. 天下国家之事,败于小人者十一,败于君子者十九(转)
  20. 乔列斯基(Cholesky)法解方程(python,数值积分)

热门文章

  1. 新的恶意软件将后门植入微软 SQL Server 中
  2. Windows Terminal Preview 1909 发布
  3. VS Code 新扩展,面向 Web 开发人员调试 DOM
  4. JavaScript和Chrome中的SSDP发现
  5. php如何修改二维数组的值,php如何改变二维数组的值
  6. py导入包异常跳出_python~异常处理及包
  7. 服务器对操作系统有什么要求,服务器对操作系统有什么要求
  8. php 判断html5,html5触摸事件判断滑动方向的实现
  9. Android 8.0 linux内核,在Ubuntu上为Android增加硬件抽象层(HAL)模块访问Linux内核驱动程序---Android8.0版本实现-对照老罗版本...
  10. php枚举属于什么类型,python枚举类型是什么?python枚举类型的简单介绍