JAVA集合专题6 —— HashMap

Java集合专题(含源码) Java集合专题(超级详细) 文章目录Java集合专题(超级详细)前言一、集合是什么?1.集合和数组的区别2.Collection体系的继承树2.1 Collection接口常用方法2.2 Collection常用遍历方式2.2.1 迭代器Iterator使用2.2.2 增强for循环遍历2.3 List常用遍历方式3.Map体系的继承树4.List,Set,Map三者的区别二、源码分析1.ArrayList源码分析2.读入数据总结 一、集合是什么? 集合是一个用来存放对象的容器,它只能存放对象 阅读详情

底层结构

HashMap底层真正存储数据的是一个数组 + 链表 + 红黑树的结构

由于对象是无限的,数组长度是优先的,所以通过某个算法,计算得key的hash值,将一个Node结点放入数组之中

编程练习1

给定两个字符串s和t,它们只包含小写字母
字符串t是由s中的字母随机打乱之后,在随机的一个位置添加一个字母生成的
请找出那个添加的字母
比如:
s = “abcd”
t = “baedc”
输出:e

解题思路

字符串T比字符串S长度多1,先把T的首位字符赋值给C,然后以字符串S的长度遍历,用C依次异或S的第i位和T的第i+1位,最终C里面存的字符就是添加的

code
package cs.kaoyan.javase.com.map;

/**
 *
 给定两个字符串s和t,它们只包含小写字母
 字符串t是由s中的字母随机打乱之后,在随机的一个位置添加一个字母生成的
 请找出那个添加的字母
 比如:
 s = "abcd"
 t = "baedc"
 输出:e
 */
public class Test10 {
    public static void main(String[] args) {
        String s = "abcd";
        String t = "baedc";

        //测试代码:
        /*System.out.println('c' ^ 'c');//0
        System.out.println((char)('c' ^ 'c' ^ 'a'));//a*/

        char differentChar = findDifferentChar(s, t);
        System.out.println(differentChar);

    }


    /**
     * 用来查找添加的字符
     * @param s1:原字符串
     * @param s2:打乱顺序并添加一个字符之后的字符串
     * @return:添加的字符
     */
    public static char findDifferentChar(String s1,String s2){
        int length1 = s1.length();

        char[] char1 = s1.toCharArray();
        char[] char2 = s2.toCharArray();

        //将char2的第一位字符赋给result
        char result = char2[0];
        for (int i = 0; i < char1.length; i++) {
            //对s的第i位做异或操作
            result ^= char1[i];
            //对t的第i + 1位做异或操作
            result ^= char2[i + 1];
        }

        return result;
    }
}

编程练习2

“aababcabcdabcde”,获取字符串中每一个字母出现的次数。要求结果:a(5)b(4)c(3)d(2)e(1)

code
package cs.kaoyan.javase.com.map;

/**
 * "aababcabcdabcde",获取字符串中每一个字母出现的次数
 * 要求结果:a(5)b(4)c(3)d(2)e(1)
 */
public class Test8 {
    public static void main(String[] args) {
        String str = "aababcabcdabcde";

        //获得字符串的长度
        int length = str.length();

        //用来存储每个字母出现的次数
        int[] arr = new int[26];

        for (int i = 0; i < length; i++) {
            //先找到字符串str第i个位置的字符,减去'a'之后得到下标
            //下标与字符的对应关系:0->a  1->b 2->c 3->d...
            int index = (int) (str.charAt(i) - 'a');
            //arr[0] = 5  0->a,表示'a'出现了5次
            arr[index] ++;
        }

        for (int i = 0; i < arr.length; i++) {
            if (arr[i] != 0){
                //a(5)b(4)c(3)d(2)e(1)
                System.out.print((char)(i + 'a') + "(" + arr[i] + ")");
            }
        }
    }
}
Java 集合专题 【韩顺平讲Java】Java集合专题 -ArrayList HashMap HashSet List Map TreeMap 01----集合的理解和好处 02----集合的框架体系 阅读详情

相关推荐

Java集合源码笔记:HashMap+List集合

大型分布式系统犹如一个生命,系统中各个服务犹如骨骼,其中的数据犹如血液,而Kafka犹如经络,串联整个系统。这份Kafka源码笔记通过大量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。麻烦帮忙转发一下这篇文章+关注我《一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码》点击传送门即可获取!量的设计图展示、代码分析、示例分享,把Kafka的实现脉络展示在读者面前,帮助读者更好地研读Kafka代码。

2301_79835671的博客 810

LeetCode_389 找不同

1、题目:找不同 给定两个字符串 s 和 t,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。 2、解题思路 方法一:求和 将字符串 s 中的所有字符的ASCII值全部相加,同样的将 t 中的所有ASCII码值相加,再将 t的ASCII值减去 s的ASCII值,就可以得到差值,而这个差值就是添加的字符。 方法二:位运算 通过将两个字符串拼接成一个字符串,然后利用题目136的思路,...

W__winter的博客 184

告别Modern Standby!Win10/11强制S3睡眠的终极指南(含BIOS设置避坑)

本文是针对Windows 10/11用户因Modern Standby(S0低电量待机)导致睡眠耗电、发热问题的终极解决方案。文章详细对比了Modern Standby与传统S3睡眠(Suspend to RAM)的本质区别,并提供了从系统诊断、注册表修改、BIOS/UEFI设置避坑到驱动优化的完整步骤,旨在帮助用户强制启用稳定、省电的S3睡眠模式,彻底告别睡眠噩梦。

n7o8p的博客 799

LeetCode每日一题, 389

给定两个字符串 s 和 t,它们只包含小写字母。字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。请找出在 t 中被添加的字母。 思路: 和383类似,先将s的字符传入一个字典,然后对t的每个元素进行判断即可。 #!/user/bin/env python # !-*-coding:utf-8 -*- # !Time :2018/9/25 3:51 PM # !Author : hy...

c630565685的博客 324

【数字电源/MATLAB+PLECS】如何进行 Buck 数字电源仿真(二)PLECS 搭建开环 Buck 功率级

本文介绍了如何在PLECS中搭建开环Buck功率级模型,验证数字电源设计的基本思路。重点内容包括: 明确开发顺序:先开环验证功率级,再闭环设计控制器 搭建关键组件:输入电源、PWM模块、MOSFET开关、续流二极管、LC滤波电路及负载 设置初始参数:24V输入、12V输出、200kHz开关频率、22μH电感、100μF电容 测量关键波形:MOSFET Vds验证开关动作、电感电流纹波和输出电压稳态值 提供完整仿真模型和GitHub资源,便于读者复现验证 文章强调通过开环测试先确保功率级正确性,为后续闭环控制

weixin_43234123的博客 1218

FastGPT 引申:借鉴 FastGPT 基于MySQL + ES 实现知识库(含表结构以及核心代码)

FastGPT 引申:借鉴 FastGPT 基于MySQL + ES 实现知识库(含表结构以及核心代码)

蜗牛的专栏 3435

LeetCode 389.找不同【Java】

目录1.题目2.思路与代码 1.题目 给定两个字符串 s 和 t,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。 示例 1: 输入:s = "abcd", t = "abcde" 输出:"e" 解释:'e' 是那个被添加的字母。 示例 2: 输入:s = "", t = "y" 输出:"y" 示例 3: 输入:s = "a", t = "aa" 输出:"a" 示例 4: 输入:s = "ae", t = "aea" 输出:"a"

m0_47675761的博客 314

C++上机——2023年“信息与未来”小学生编程思维展示官方题解

本次活动前三题是“根据问题描述实现代码”类型的问题,题解和示例代码由人工智能GPT-4直接阅读题面后生成――只要熟悉C++的语法和基本的编程、调试,即可解决p1、p2、p3。后三题有一定的算法性,我们给出命题思路和一些可能的解法。注意:本题解是面向指导教师的;指导教师在讲解时可以根据学生掌握程度进行调整。

qq_39127687的博客 2296

389. Find the Difference

题意: 给定两个字符串s ,t ,其中只包含小写字符,t由s打乱之后在任意位置随机添加一个字母组成。找出添加到t上的哪个字母。思路:之前最早的想法使用python集合的方法,求差集就可以了,但是有两个问题,第一是求出的那个字母是个集合类型,没法输出,就像’set([‘a’])’,最后用pop的方法解决了,但是出现了第二个问题,对于s = ‘aa’, t = ‘a’时,s和t的集合类型都是a,这就尴尬

xjcvip007的博客 325

库存预测新思路:AI架构师的图神经网络应用

用图神经网络(GNN)解决传统库存预测的“关联盲区”,让预测从“孤立商品”转向“商品网络”。传统库存预测的痛点分析;GNN的核心概念(图结构、消息传递);GNN在库存预测中的算法原理与代码实战;实际应用场景与未来趋势。背景:用超市老板的烦恼引出传统方法的问题;核心概念:用“商品朋友圈”比喻GNN的图结构和消息传递;算法原理:用数学公式和Mermaid流程图讲清楚GNN的工作流程;实战:用PyTorch Geometric写一个简单的库存预测模型;

AI Python 编程之道的博客 959

增量学习入门:概念、代码示例与应用场景

在当今快速变化的数据环境中,传统的机器学习模型往往需要重新训练以适应新的数据。然而,这种方法不仅耗时耗力,还可能导致模型性能的不稳定。增量学习(Incremental Learning)作为一种新兴的学习范式,能够在新数据到来时动态更新模型,而无需重新训练整个模型。本文将详细介绍增量学习的基本概念、代码示例、应用场景以及需要注意的事项。增量学习作为一种高效的机器学习方法,能够在新数据到来时动态更新模型,具有广泛的应用前景。通过本文的介绍,相信你对增量学习有了初步的了解。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 1152

LeetCode389找不同

给定两个字符串 s 和 t,它们只包含小写字母。 字符串 t 由字符串 s 随机重排,然后在随机位置添加一个字母。 请找出在 t 中被添加的字母。 示例: 输入: s = “abcd” t = “abcde” 输出: e 解释: ‘e’ 是那个被添加的字母。 思路:参考136题只出现一次的数字 这里就相当于把136中的一个字符串拆成了两个,其中一个比另一个多一个字符,136的重点在于 a ^a...

max119xlx的博客 238

【AUTOSAR-DEM】-2.4-APP SWC如何读取MIL灯状态以及配置MIL灯

该篇博文将告诉您: MIL(Malfunction Indicator Lamp/Light)灯的点灯和灭灯过程; DEM模块如何配置MIL灯; APP SWC如何获取MIL灯状态。

「汽车电子助手」的博客 1712

Java集合之一—HashMap

深入浅出学Java——HashMap 哈希表(hash table) 也叫散列表,是一种非常重要的数据结构,应用场景及其丰富,许多缓存技术(比如memcached)的核心其实就是在内存中维护一张大的哈希表,本文会对java集合框架中的对应实现HashMap的实现原理进行讲解,然后会对JDK7的HashMap源码进行分析。 一、什么是哈希表 在讨论哈希表之前,我们先大概了解下其他数据结构在新增,...

深入浅出学JAVA 60万+

mapbox进阶,dem数据转为等高面,加载转换后的等高面到地图

本文详细介绍如何基于mapbox-gl v3.*.* 版本,使用dem数据转为等高面,加载转换后的等高面到地图,亲测可用。希望能帮助到您。一起学习,加油!加油!

我哎GIS博客 407

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Java集合专题

Java面试之集合专题。

从知识输入到知识输出 1211

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Java集合框架中HashMap和Hashtable的区别是什么?

Java集合框架(Java Collections Framework, JCF)是一组相互关联的接口和类,旨在提供一种标准的方式来存储和操作数据。集合框架中最常用的接口包括CollectionSetListMap等。Map接口定义了键值对映射的标准,而HashMap和Hashtable则是Map的具体实现。HashMap和Hashtable虽然都是Map接口的实现,但它们之间存在着明显的区别。HashMap提供了更好的性能,并且支持null键和null值,适用于大多数单线程场景。Hashtable。

你好,欢迎来到我的个人技术博客!我是一个还有头发的程序猿,一名热衷于探索编程奥秘的程序员。在这个充满无限可能的数字时代,我致力于通过代码编织梦想,解决问题,不断追求技术的极致。 自从踏上编程之旅以来,我涉足了多个领域,包括但不限于Web开发、移动应用开发 1461

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

Java集合之HashMap源码详解

HashMap的源码详细解析

个人博客,欢迎收藏。 1931

java中的集合———— HashMap集合的增删改查

本文直接上代码,代码分析 主要介绍常用的一个HashMap集合 import java.util.*; // Map 增删改查 // 键值对存储结构的集合 无序 public class Mapzsgc { public static void main(String[] args) { HashMap hm = new HashMap(); //增加 hm.put(1,...

javadaozhu的博客 6712

Java集合类之Map的HashMap之常用方法的使用

Java集合类之Map的HashMap之常用方法的使用 任务描述 使用 HashMap 集合操作菜单 相关知识 1.什么是 HashMap HashMap 是 Map 接口的实现类,它存储的内容是键值对(key-value)映射,其中 key、value 都可以为 null。 HashMap 是无序的,即被存入到 HashMap 中的元素,在遍历 HashMap 时,其输出是无序的。 2.创建 HashMap 集合 使用以下代码即可创建一个 HashMap 集合。 public static v

qq_45823118的博客 8279

【JAVA-Day53】Java集合类HashMap详解

作为一名Java开发者,熟练掌握集合类是至关重要的。其中,HashMap作为Java中常用的集合类之一,具有重要的地位。本篇博客将带您深入了解HashMap的各种操作技巧、实际应用场景以及面试可能涉及的问题,同时深度探讨其实现原理与性能优化,让您全面掌握HashMap的精髓。HashMap是Java中的一种数据结构,它提供了一种键值对的映射关系,允许使用键来查找值。在实际开发中,它能够高效地进行数据存储和检索,是Java编程中常用的集合类之一。

沉淀所学,分享所思,让热爱与成长同行。商务记录AI实战经验,助力开发者快速成长。 热爱AI,希望做出有影响力的技术成果。 技术点亮生活,分享连接价值与机会。 专注AI落地实战,陪你走好技术每一步。 3万+

【Java集合】HashMap

哈希表又叫散列表,或者映射、字典都是指哈希表,哈希表是通过关键码映射到数组的某个位置来访问的数据结构,实现这个映射的函数就是哈希函数,哈希表结合了数组和链表的优点,查找和插入操作的时间复杂度都是O(1)。

qq_38875964的博客 1554

新版Java面试专题视频教程——集合篇

新版Java面试专题视频教程——集合篇

这里有一只小马吖 1376

【Java专题】Java的HashMap集合详解

一、什么是HashMap集合? HashMap:集合底层其实就是哈希表/散列表的数据结构 二、哈希表又是什么结构呢? 哈希表:就是一个数组和单向链表的结合体,他是将两种数据结构融合到了一起,充分的发挥他们的优点。也就是说哈希表是一个一维数组,且这个数组中的每一个元素都是一个单向链表。 数组:在查询方面效率很高,但是在删除方面效率就很低了(元素移动) 单向链表:在随机增删方面效率很高,但是在查询方面就很低(一个一个的遍历) transient Node<K,V&gt...

王华春_Jason 624

再探Java集合系列—HashMap

前面我们已经针对LinkedList和ArrayList的底层原理进行了具体研究讨论,大家可以跳链接阅读哦~Map是一种键-值对(key-value)集合,Map中每一个元素都包含一个键对象和一个值对象。元素:键-值对整体Java中的基本类型和包装类型之间存在自动装箱(autoboxing)和拆箱(unboxing)的过程。当我们将基本类型的值放入Map中时,Java会自动将其转换为对应的包装类型;当我们从Map中取出包装类型的值时,Java会自动将其转换为对应的基本类型。

一起加油吧~ 1525

Java集合框架源码分析:hashMap

特性描述是否允许为nullkey和value都可以取值为null是否允许重复key重复会覆盖,value允许重复是否有序无序是否线程安全非线程安全JDK1.8之前HashMap是由数组 + 链表结构组成,数组是HashMap的主体,链表则是主要为了解决哈希冲突(两个对象调用的hashCode方法计算的哈希码值一致导致计算的数组索引值相同)而存在(拉链法:解决冲突)。JDK1.8以后(包含JDK1.8)HashMap是由数组+链表+红黑树组成。

玉汝于成 1521
上一篇: JAVA集合专题5 ——ArrayDeque + BlockingQueue
下一篇: Java —— JDBC与批处理、事务
Zsprinkle
博客等级 码龄8年 235粉丝 147原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值