JAVA学习线路:day08集合[3]

2019最新《传智教育黑马java项目实战》 1.SE基础班1-1 Java基础语法1-2 面向对象和封装1-3 常用API第一部分1-4 继承与多态1-5 常用API第二部分1-6 集合1-7 异常与多线程1-8 File类与IO流1-9 网络编程1-10 JDK8新特性阶段1视频目录.docx2.javaweb2-1基础加强.zip2-2MySQL.zip2-3JDBC.zip2-4HTML和CSS.zip2-5JavaScript.zi... 阅读详情

心得:
我是一名正在自学的java的即将毕业的大学生
总结笔记是为了让自己更好的理解和加深印象。可能不是那么美观,自己可以看懂就好
所有的文档和源代码都开源在GitHub: https://github.com/kun213/DailyCode上了。希望我们可以一起加油,一起学习,一起交流。

day08【集合】

Map集合

1、说出Map集合特点

发现Map接口下的集合与Collection接口下的集合,它们存储数据的形式不同,如下图。

  • Collection中的集合,元素是孤立存在的(理解为单身),向集合中存储元素采用一个个元素的方式存储。
  • Map中的集合,元素是成对存在的(理解为夫妻)。每个元素由键与值两部分组成,通过键可以找对所对应的值。
  • Collection中的集合称为单列集合,Map中的集合称为双列集合。
  • 需要注意的是,Map中的集合不能包含重复的键,值可以重复;每个键只能对应一个值。
2、使用Map集合添加方法保存数据

示例代码:

 /**
     *  V put(K,V)将键值对,存储在集合中
     *  返回作为值的对象
     *  put方法的返回值,一般情况下都返回null
     *  当向集合中存储了重复键的时候,将原有的值覆盖
     *  put方法,返回被覆盖之前的值
     */
    public static void method(){
        //创建Map集合,使用实现类HashMap集合
        //键是字符串类型,值是整数类型
        Map<String,Integer> map = new HashMap<String, Integer>();
        //Map集合方法put,存储键值对
        map.put("a",1);
        map.put("b",2);
        Integer i = map.put("b",5);
        map.put("c",3);
        System.out.println(map);
        System.out.println(i);
    }
}
3、使用”键找值”的方式遍历Map集合

通过元素中的键,获取键所对应的值

分析步骤:

  1. 获取Map中所有的键,由于键是唯一的,所以返回一个Set集合存储所有的键。方法提示:keyset()
  2. 遍历键的Set集合,得到每一个键。
  3. 根据键,获取键所对应的值。方法提示:get(K key)

遍历图解:

示例代码:

public class MapDemo02 {
    public static void main(String[] args) {
     Map<String,Integer> map = new HashMap<String,Integer>();
             map.put("java",10000);
             map.put("c",12000);
             map.put("python",8000);
        //1: Map集合方法keySet(),获取到存储所有键的Set集合
        Set<String> set = map.keySet();
        // 2: 遍历Set集合,取出了集合中的所有的键
        Iterator<String> it = set.iterator();
        while (it.hasNext()){
            String key =  it.next();
            // 3: Map集合方法get()获取值
            Integer value =  map.get(key);
            System.out.println(key+"::"+value);
        }
        System.out.println("增强for循环--------------------");
        for (String key: set){
            Integer value = map.get(key);
            System.out.println(key+"::"+value);
        }
    }
4、使用”键值对”的方式遍历Map集合

即通过集合中每个键值对(Entry)对象,获取键值对(Entry)对象中的键与值。

Entry键值对对象:

我们已经知道,Map中存放的是两种对象,一种称为key(键),一种称为value(值),它们在在Map中是一一对应关系,这一对对象又称做Map中的一个Entry(项)。Entry将键值对的对应关系封装成了对象。即键值对对象,这样我们在遍历Map集合时,就可以从每一个键值对(Entry)对象中获取对应的键与对应的值。

在Map集合中也提供了获取所有Entry对象的方法:

  • public Set<Map.Entry<K,V>> entrySet(): 获取到Map集合中所有的键值对对象的集合(Set集合)。

获取了Entry对象 , 表示获取了一对键和值,那么同样Entry中 , 分别提供了获取键和获取值的方法:

  • public K getKey():获取Entry对象中的键。
  • public V getValue():获取Entry对象中的值。

操作步骤与图解:

  1. 获取Map集合中,所有的键值对(Entry)对象,以Set集合形式返回。方法提示:entrySet()。
  2. 遍历包含键值对(Entry)对象的Set集合,得到每一个键值对(Entry)对象。
  3. 通过键值对(Entry)对象,获取Entry对象中的键与值。 方法提示:getkey() getValue()

遍历图解:

示例代码:

public class MapDemo03 {
    public static void main(String[] args) {
        Map<String,Integer> map = new HashMap<String, Integer>();
        map.put("java",10000);
        map.put("c",11000);
        map.put("php",8000);
        map.put("python",9000);
        // 1: Map集合的方法 entrySet()
        Set<Map.Entry<String,Integer>> set =  map.entrySet();
         System.out.println("迭代器---------------");
        //2: 遍历Set集合
        Iterator<Map.Entry<String,Integer>> it = set.iterator();
        while (it.hasNext()){
            // 3: 对应关系对象,获取键和值
            // set集合中,存储的元素是Entry对象, it.next()取出的也是Entry对象
            Map.Entry<String,Integer> entry =  it.next();
            //Entry对象的方法 getKey() getValue()
            String key =  entry.getKey();
            Integer value =  entry.getValue();
            System.out.println(key+"::"+value);
        }
        System.out.println("增强for循环----------------");
        for (Map.Entry<String,Integer> entry : set){
            String key = entry.getKey();
            int value = entry.getValue();
            System.out.println(key+"::"+value);
        }
    }
5、能够使用HashMap存储自定义键值对的数据

Map接口实现类HashMap类特点:

  • 底层哈希表结构。
  • 不允许重复键。
    • 用作键的对象,应该重写hashCode()方法和equals()方法。
  • 此集合可以使用null值和null键。
  • 线程不安全,运行速度快。

练习:每位学生(姓名,年龄)都有自己的家庭住址。那么,既然有对应关系,则将学生对象和家庭住址存储到map集合中。学生作为键, 家庭住址作为值。

注意,学生姓名相同并且年龄相同视为同一名学生。

编写学生类:

public class Student {
    private String name;
    private int age;
    //构造方法
    //get/set
    @Override
    public boolean equals(Object o) {
        if (this == o)
            return true;
        if (o == null || getClass() != o.getClass())
            return false;
        Student student = (Student) o;
        return age == student.age && Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}

测试类:

public static void main(String[] args) {
    //1,创建Hashmap集合对象。
    Map<Student,String> map = new HashMap<Student,String>();
    //2,添加元素。
    map.put(new Student("lisi",28), "上海");
    map.put(new Student("wangwu",22), "北京");
    map.put(new Student("wangwu",22), "南京");

    //3,取出元素。键找值方式
    Set<Student> keySet = map.keySet();
    for(Student key: keySet){
    String value = map.get(key);
    	System.out.println(key.toString()+"....."+value);
    }
}
  • 当给HashMap中存放自定义对象时,如果自定义对象作为key存在,这时要保证对象唯一,必须复写对象的hashCode和equals方法(如果忘记,请回顾HashSet存放自定义对象)。
  • 如果要保证map中存放的key和取出的顺序一致,可以使用java.util.LinkedHashMap集合来存放。

这是我的公众号,希望大家可以关注,让我们一起做最好的自我。
我也会把我自学视频分享在上面,供大家一起学习。

CodeBull

2025小红书跳转卡片实战指南:从零搭建独立后台与自动化发卡系统 本文提供了一份2025年小红书跳转卡片的实战搭建指南,详细解析了独立后台系统的核心架构与自动化发卡流程。文章从零开始,手把手教你使用Node.js、Vue.js等技术栈构建包含后台管理、用户制卡中心与前端交互的完整系统,旨在帮助运营者实现合规引流,并掌握数据自主权与自动化运营能力。 阅读详情

相关推荐

[MTK][Android P]如何去掉差分包中的preloader分区

最近碰到一个问题,在进行差分升级的时候,会因为某些原因导致preloader hash值不匹配,升级失败,所以需要在差分升级的时候不升级preloader。 解决的方法,就是在制作AB分区的差分升级包的时候,把目标zip解压出来,把ab_partitions.txt中的分区名去掉,同时把preloader.img去掉 修改如下: Project/build/tools/releasetool...

thonmin的专栏 1433

Java中的Type

Type是Java 编程语言中所有类型的公共高级接口(官方解释),也就是Java中所有类型的“爹”;其中,“所有类型”的描述尤为值得关注。它并不是我们平常工作中经常使用的 int、String、List、Map等数据类型,而是从Java语言角度来说,对基本类型、引用类型向上的抽象; Type体系中类型的包括:原始类型(Class)、参数化类型(ParameterizedType)、数组类型(...

weixin_30341735的博客 393

从零开始安装pytorch(包含GPU和CPU版本的安装)

Pytorch是。

qiaoxinyu1989的博客 8万+

HashMap学习

什么是HashMap HashMap 是基于哈希表的 Map 接口的实现,这种实现提供了所有可选的Map操作,并允许 null 值和 null 键,是 Java 程序员使用频率最高的用于映射(键值对)处理的数据类型。HashMap 继承了 AbstractMap,实现了 Map<K,V>, Cloneable, Serializable 接口 类定义 类属性定义 /** * 默认初始容量16,2的4次方=16 */ static final int DEFAU

GoldenStar的博客 501

STM32CUBEMX 使用教程5 — DMA配置 & 串口结合DMA实现数据搬运

DMA(Direct Memory Access),直接存储器访问(或数据搬运),是STM32中很实用的一个外设。DMA 传输数据方式不需要 CPU 参与控制传输,也不用中断处理的方式进行数据搬运处理,纯粹通过硬件为 RAM 与 I/O 设备之间开辟一条直接传送数据的通路,使 CPU 的效率大大提高。

weixin_43866583的博客 1499

【HarmonyOS】ArkUI的组件扩展

ArkuI的组件扩展主要是通过等装饰器来对于一些常用的自定义组件进行封装, 来简化UI开发流程, 提高自定义组件的可复用性。

2302_79763237的博客 1166

java map class_HashMap Class (Java.Util) | Microsoft Docs

HashMap ClassDefinitionNamespace:Assembly:Mono.Android.dllHashMap is an implementation of IMap.In this article[Android.Runtime.Register("java/util/HashMap", ApiSince=1, DoNotGenerateAcw=true)][Java.In...

weixin_39903375的博客 299

【2026年阿里巴巴集团暑期实习- 4月25日-算法岗-第二题- 矩阵计数】(题目+思路+Java&C++&Python解析+在线测试)

摘要: 给定两个非负整数序列a和b,构造n×m矩阵C,其中C[i][j]=a[i]×b[j]。统计矩阵中元素≥k的数量。解法是先对数组b排序,然后对于每个a[i],若k=0则直接累加m;若a[i]=0且k>0则跳过;否则计算需要的最小b[j]值,在排序后的b中使用二分查找确定满足条件的元素数量。时间复杂度为O((n+m)log m),空间复杂度O(1)。代码实现了排序和二分查找的高效组合。

m0_73659489的博客 64

HashMap数据结构和简单的源码分析

HashMap继承了AbstractMap类,同时也实现了Map接口,AbstractMap类也实现了Map接口,貌似有点HashMap实现Map接口是多余的操作,但是通过反射获取实现接口时,如果不是显式实现某接口,而是通过继承实现,则获取不到该接口,在动态代理时需注意。 HashMap.class.getInterfaces(); HashMap实现了Cloneable接口,实现了浅拷贝 HashMap的数据结构 HashMap的底层结构是数组加链表,JDK8时进行优化,加入了红黑树结构。..

laohuaichi5316的博客 387

UDPProbe UDP端口存活探测(发送特征包+响应分析)、UDP服务识别

qDebug() << "收到响应:" << ip.toString() << ":" << port << " 服务:" << serviceName << " 响应长度:" << response.size();qDebug() << "开始探测:" << targetIp << ":" << port << " 超时时间:" << timeout << "ms";qInfo() << "\n==================== UDP探测结果 ====================";

寒寒豆豆软件公司的博客 146

【人工智能时代】- 一键部署本地AI大模型

Ollama是一个开源项目,致力于简化大型语言模型(LLM)的本地部署过程。它允许用户在自己的硬件上运行和测试最新的语言模型,无需依赖云服务。Ollama提供了一个类似于OpenAI的API接口,使得开发者可以轻松地在自己的应用程序中集成大型语言模型。此外,Ollama WebUI为用户提供了一个友好的界面,用于管理和与模型进行交互。

xiaoli8748的专栏 2370

Java中Object转Map类型,Map转Object类型

前言 在使用Java编程过程中,经常会遇到获取的数据为Object类型,但只是以这种方式传输,实质还是Map类型,此时就涉及到两种类型的相互转换。 强制转换 在类型转换工程中,常见的转换方式为强制转换。如(String)map.get(key),(int)map.get(key)等。但是如果接收的类型为Map,此时强转(Map<String, Object>) obj则会报出警告。 治标不治本 很多人会使用@SuppressWarnings(“unchecked”)来解决编辑器中的警告,好看是好

m0_67402914的博客 3974

Python爬虫实战:高效爬取法律法规数据库的完整指南

本文将详细介绍如何使用Python最新技术栈构建一个高效、稳定的法律法规数据库爬虫。我们将从爬虫的基本原理讲起,逐步深入到反爬机制应对、数据解析与存储、性能优化等高级话题。文章包含完整的代码实现,使用requests-html、aiohttp等现代库,以及应对法律数据库特殊结构的处理技巧。通过本文,您将掌握构建专业级法律数据采集系统的全套技能。关键词:Python爬虫、法律法规、数据采集、异步爬虫、反反爬本文详细介绍了使用Python爬取法律法规数据库的完整技术方案。

2201_76125261的博客 1274

JAVA学习线路:day06集合[1]

心得: 我是一名正在自学的java的即将毕业的大学生 总结笔记是为了让自己更好的理解和加深印象。可能不是那么美观,自己可以看懂就好 所有的文档和源代码都开源在GitHub: https://github.com/kun213/DailyCode上了。希望我们可以一起加油,一起学习,一起交流。 day06【集合】 今日学习内容-2020.9.23-9.25day06【集合】对象数组Collection集合1、说出集合与数组的区别2、使用Collection集合的常用功能迭代器(Iterator接口)1、使.

CodeBull_K的博客 766

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

JAVA学习线路:day07集合[2]

心得: 我是一名正在自学的java的即将毕业的大学生 总结笔记是为了让自己更好的理解和加深印象。可能不是那么美观,自己可以看懂就好 所有的文档和源代码都开源在GitHub: https://github.com/kun213/DailyCode上了。希望我们可以一起加油,一起学习,一起交流。 day07【集合】 今日学习内容-2020.9.27day07【集合】Collections工具类1、使用集合工具类的常用方法2、使用Comparator比较器进行排序增强for循环1、使用增强for循环遍历集合和.

CodeBull_K的博客 237

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

在百度地图上爬取某市所有的公交车线路

一、爬取目标 爬取某市所有公交线路的站点经纬度数据及整个公交线路的轨迹数据。 二、爬取过程使用的工具包 jsoup、d3.v3 三、爬取某市的公交线路名 如爬取海南市的公交线路数据,首先到https://haikou.8684.cn/line1上爬取海口市所有公交线路名集合。 该段爬虫代码: import java.io.File; import java.io.IOExcep...

T2636587231L的博客 4605

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

JAVA学习线路:day13-JDK8新特性

心得: 我是一名正在自学的java的即将毕业的大学生 总结笔记是为了让自己更好的理解和加深印象。可能不是那么美观,自己可以看懂就好 所有的文档和源代码都开源在GitHub: https://github.com/kun213/JavaNotes上了。希望我们可以一起加油,一起学习,一起交流 day13 JDK8新特性【Lambda、函数式接口、Stream流】 今日学习内容-2020.10.13day13 JDK8新特性【Lambda、函数式接口、Stream流】一、Lambda表达式1.1 理解函数式.

CodeBull_K的博客 722

Java学习——Day08:多线程

1.线程简介 多任务:看起来是多个任务同时在做,其实本质上同一时间只做一件事,切换很快导致看起来同时多了多件事。 多线程:多条线路同时做多件事情,多条执行路径,主线程和子线程并行交替执行。 程序:程序是指令和数据的有序集合,其本身没有任何运行的含义,是一个静态的概念。 进程:是执行程序的一次执行过程,它是一个动态的概念。是系统资源分配的单位。 线程:一个进程中可以包含多个线程,线程是CPU调度和执行的单位。 【注意】:很多多线程是模拟出来的,真正的多线程是指有多个CPU,即多核,如服务器。如果是模拟出来的多

zxzx666的博客 252

Day100 Java总结

Java基础 基础:Java基础语法,Java面向对象 中级:容器,异常,IO流,线程,反射,拷贝,常用API,注解,网络编程 高级:设计模式,多线程高级,JVM优化,JDK新特性 其他:IDEA,Eclipse JavaWeb 前端:HTML,CSS,JavaScript,BootStrap,JQuery,Vue,webpack 服务:Servlet(Request,Response),三层架构,Ajax,Tomcat,Cookie,Session,Filter,Listener,JSP 数

qq_31707969的博客 222

Day66 Web开发7 旅游详情页面

Servlet /** * 根据id查询一个旅游线路的详细信息 * @param request * @param response * @throws ServletException * @throws IOException */ public void findOne(HttpServletRequest request, HttpServletResponse ...

qq_31707969的博客 346

汇总:java基础复习路线

Day01基础1-- 计算机、java语言、 java开发工具安装

weixin_58580280的博客 455

Spring学习day01

一、前言 Spring的学习,我是通过哔哩哔哩网站上的视频,黑马程序员的,个人觉得很不错,推荐给大家,讲解思路清晰,内容充实,总共四天,让我能够全面的了解Spring的常用操作及应用。 链接如下:https://www.bilibili.com/video/av47952931?from=search&seid=4094573305286061275 二、Spring概述 2.1 spri...

qq_34504626的博客 1837

Java学习day07-Java高级编程-多线程

Eclipse->IBM IntelliJ IDEA->JetBrains

qq_36820823的博客 524

黑马程序员_Java基础_我的Day26学习笔记

网络编程相关知识整理01. 网络编程概述(了解) A:计算机网络 是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统。 B:网络编程 就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换。 02. 网络编程三要素之端口号概述(掌握) 每个程序在设备上的唯一标识 每个

qq_21796869的博客 534

2019-06-05 Java学习日记 day26 网络编程

网络编程 *计算机网络   是指将地理位置不同的具有独立性功能的多台计算机及其外部设备,通过通信线路连接起来,在网络操作系统,网络管理软件及网络通信协议的管理和协调下,实现资源共享和信息传递的计算机系统 *网络编程   就是用来实现网络互连的不同计算机上运行的程序间可以进行数据交换 网络编程三要素 IP   每个设备在网络中的唯一标识   每台网络终端在网络中都有一个独立的地...

weixin_30532759的博客 210

传智播客-traffic Lamp-day10

---------------------- android培训、java培训、期待与您交流! ---------------------- 7k------traffic Lamp 面向对象的思想:谁拥有数据,谁就提供方法。 (4~6课为思路,7为road,8为定时器,9为灯的亮暗,10灯的控制器) 用到的方法:匿名内部类,枚举enum,集合arrayList,      多线程Thr

w44gq2q44w的专栏 1072
上一篇: JAVA学习线路:day07集合[2]
下一篇: JAVA学习线路:day09多线程[1]
CodeBull码牛
博客等级 码龄6年 14粉丝 18原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值