黑马程序员-java之HashMap,TreeMap

实战复盘:纷玩岛(Livelab)候补订单微信支付协议的逆向与复现 通过本次对纷玩岛候补支付接口的分析,我们实现了一个脱离 App UI 的轻量级支付发起器。这不仅验证了其API的设计逻辑(Standby -> PrePayInfo 分层设计),也为后续的自动化监控或辅助抢票工具提供了支付环节的技术验证。技术本无罪,关键在于如何使用。理解这些底层协议,有助于我们写出更健壮的代码,也能在遇到线上支付问题时快速定位是业务层(API)问题还是通道层(微信)问题。 阅读详情

--------------android培训、java培训、期待与您交流--------------------


1 HashMap底层是按照哈希表对元素进行存储的,所以其进行查找,插入,删除比TreeMap效率高,一般常用HashMap


2 TreeMap则可以对元素进行排序

3 共性:二者存储元素都唯一,不允许有相同的key出现

实例:获取grflkaxsgnjsduasjwmlsnvxcuiqwhriuzsnvkzifu字符串中字母出现的次数,形如a(1)c(5)...括号中数字表示字母出现的次数,且按字母自然顺序排序
分析:从结果可以看出该形式字母与次数形成了一一对应的映射关系,而且最终结果要求字母有序,所以考虑用TreeMap

代码
package com.itheima;

import java.util.Iterator;
import java.util.Map;
import java.util.Map.Entry;
import java.util.Set;
import java.util.TreeMap;

public class TreeMapDemo {

    public static void main(String[] args) {
        // TODO Auto-generated method stub
        String str = "grflkaxsgnjsduasjwmlsnvxcuiqwhriuzsnvkzifu";//定义一个字符串
        System.out.println(getCount(str));//调用自定义的方法计算出各个字母出现的次数并打印
    }
    
    public static String getCount(String str){
        char[] chs = str.toCharArray();//将字符串变成字符数组
        TreeMap<Character,Integer> tm = new TreeMap<Character,Integer>();//创建TreeMap对象用于存储字母和对应次数组成的键值对
        for(int i=0;i<chs.length;i++){//遍历字符数组,拿数组中的元素和集合做比较
            if(!tm.containsKey(chs[i])){//集合中不存在该元素,则把该元素和对应的次数1存入集合
                tm.put(chs[i], 1);
            }else{
                int value = tm.get(chs[i]);
                value++;
                tm.put(chs[i], value);//集合中已存在该元素,则把该元素对应的原来次数自增1后再存入集合,覆盖原来的值
            }
        }
        StringBuilder sb = new StringBuilder();//定义一个StringBuilder容器,将集合中的键值对分别存进去形成与要求一样的结果格式
        Set<Map.Entry<Character,Integer>> entrySet = tm.entrySet();//将集合中的键值对取出组成Set集合
        Iterator<Map.Entry<Character, Integer>> it = entrySet.iterator();//取出set中的迭代器
        while(it.hasNext()){//遍历set集合
            Map.Entry<Character,Integer> entry = it.next();
            char ch = entry.getKey();//取得key即字母
            int count = entry.getValue();//取得value即对应的次数
            sb.append(ch+"("+count+")");//将字母与对应的次数以最后的格式存入集合StringBuilder容器中
        }
        return sb.toString();//返回最后的结果字符串
    }

}

运行结果

a(2)c(1)d(1)f(2)g(2)h(1)i(3)j(2)k(2)l(2)m(1)n(3)q(1)r(2)s(5)u(4)v(2)w(2)x(2)z(2)


小红书直播弹幕采集 本文主要介绍小红书直播间弹幕的采集,便于进行直播数据监控与直播数据进行分析。 阅读详情

相关推荐

华硕笔记本+Ubuntu 20.04:用cpupower解决Intel CPU频率上不去/功耗墙问题实战

本文详细介绍了在华硕笔记本Ubuntu 20.04系统下使用cpupower工具解决Intel CPU频率受限和功耗墙问题的实战方法。通过禁用Intel P-State驱动、配置userspace模式以及高级调优技巧,帮助用户突破性能瓶颈,提升编译和计算效率。

weixin_42561476的博客 523

【Map】

主要内容 Map集合 教学目标 能够说出Map集合特点 使用Map集合添加方法保存数据 使用”键找值”的方式遍历Map集合 使用”键值对”的方式遍历Map集合 能够使用HashMap存储自定义键值对的数据 能够使用HashMap编写斗地主洗牌发牌案例 第一章 Map集合 1.1 概述 现实生活中,我们常会看到这样的一种集合:IP地址与主机名,身份证号与个人,系统用户名与系统用户...

hyfsbxg的博客 293

conda环境的复制、备份操作

请确保将 source_env 替换为你要复制的现有环境的名称,并将 target_env 替换为你要创建的新环境的名称。要备份一个Conda虚拟环境,你需要将环境的配置信息和依赖包列表保存起来,以便在需要的时候能够重新创建相同的环境。要将现有的 conda 环境复制为其他环境,可以使用 conda create 命令并克隆已存在的环境。

Dollhan的博客 3772

黑马程序员_09HashMap实例

一、HashMap实例说明:添加、查找操作 import java.util.*; public class TestHashMap{  public static void main(String args[]){   HashMap m1=new HashMap();   HashMap m2

besidescrazy的专栏 589

LVI-SAM适配KITTI数据集避坑指南:IMU频率与数据同步问题解析

本文深入解析了将LVI-SAM框架适配KITTI数据集时,在IMU频率与多传感器数据同步方面遇到的核心挑战与解决方案。针对KITTI数据集中sync与extract两种数据包的差异,文章提供了从数据选择、参数调优到时间戳诊断与修复的完整避坑指南,帮助开发者实现稳定高效的SLAM系统部署。

7z8x2c4v6b9的博客 247

3DE重客户端安装

3DE重客户端安装

m0_48170265的博客 9425

黑马程序员 java基础之HashMap和TreeMap

Map集合概述    /* Map<K,V>: K (key)- 此映射所维护的键的类型 V (Value)- 映射值的类型 Map集合:该集合存储键值对.一对一对往里存.而且要保证键的唯一性 */ package map; import java.util.*; class MapDemo { public static void main(String[] args) { ...

weixin_30319097的博客 147

Multisim14.0仿真(五十九)基于74LS161的24进制计数器应用设计

它具有同步预置、异步清零功能,支持并行数据加载,并可在计数使能控制下进行二进制计数。:低电平时,在下一个时钟上升沿加载输入数据(A, B, C, D)。(多个 74LS161D 串联构成 8 位、12 位等更长计数器)。低电平时,下一个时钟上升沿加载输入数据(A, B, C, D)。:低电平有效,立即清零计数器(不受时钟控制)。均为高电平时,每个时钟上升沿计数。:两者均为高电平时,计数器才能递增。:立即清零计数器(不受时钟控制)。(通过预置初始值控制计数范围)。(计数范围:0 ~ 15,即。

corlin6688的博客 4759

黑马程序员—Java集合框架(Map、HashMap、TreeMap)

*  Map--  *      |--Hashtable:底层是哈希表数据结构,不可以存入null键和null值。该集合是线程同步的。JDK1.0效率低  *      |--HashMap:底层是哈希表数据结构,允许使用null键和null值,该集合是线程不同步的。Jdk1.2效率高  *      |--TreeMap:底层是二叉树数据结构,可以用于给Map集合中的键进行排序,线程不同

welcome to my blog,thank you! 770

10、网络安全工具:Bettercap 与 Web 应用测试工具全解析

本文详细解析了网络安全工具Bettercap及其在中间人攻击和无线攻击中的应用,同时介绍了多种Web应用测试工具,如Amass、Cadaver、Dirb等,并探讨了工具的使用场景、流程、注意事项以及未来发展趋势,为网络安全测试提供了全面的指导。

u0v1w2x3的博客 226

PyQt5开发应聘简历模版

该工具旨在帮助用户对Excel、CSV格式的数据进行快速导入、分析及可视化展示,支持折线图、柱状图、饼图等多种图表类型,提供数据筛选、排序、统计等功能,适用于企业数据分析人员日常工作。:一款用于本地文件管理的桌面应用,支持文件的新建、复制、移动、删除、重命名等基本操作,具备文件搜索、分类整理、批量操作及文件信息查看等功能,提升用户文件管理效率。:熟悉QSS(Qt Style Sheet)样式表,可对PyQt5界面进行个性化美化,包括控件颜色、字体、边框、布局等样式定制,提升应用视觉体验。

ybmzlqzj的博客 83

黑马程序员——java基础之Map集合

------Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ------- 一、Map集合概述 Map集合存数的是键值对儿,一对儿一对儿往里存,并且Map集合中键具有唯一性。Map集合具有三个具体子类:HashTable、HashaMap和TreeMap。 二、简答题:说说HashTable、HashMap和TreeMap各自有什么特点 Hash

automan1514的博客 565

matlab计算图像信噪比SNR

【代码】matlab计算图像信噪比SNR。

baidu_34971492的博客 1394

黑马程序员:Map集合:Hashtable、HashMap、TreeMap介绍

Map集合:该集合存储键值对,一对一对往里存,而且要保证键的唯一性,双列集合 当数据之间存在着映射关系时,就要先想到Map集合 1.添加 put(key,value) putAll(Map m)  2.删除 clear() remove(Object key) 3.判断 containsKey(Object key) containsValue(Object Value) i

Java notes 1380

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

黑马程序员——【学习笔记】集合——Map、HashMap、TreeMap

1 Map Map的常用子类: ——HashTable:内部结构是哈希表,是同步的。不允许null作为键或值。无序。 ——Properties:用来存储键值对型的配置文件的信息,可以和IO技术相结合。 ——HashMap:内部结构是哈希表,不是同步的 。允许null作为键或值。无序。 ——TreeMap:内部结构是二叉树,不是同步的。可以对Map集合中的键进行排序。无序。 PS:Has

oChuXinZhe的博客 636

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

新所得库 - Java集合 - HashMap & TreeMap源码解读实战篇

HashMap为什么需要链表+红黑树混合?红黑树的转换阈值是多少?为什么设定为8?TreeMap添加元素是否需要实现 hashCode/equals?(不需要)HashMap的键为什么不需要实现 Comparable?TreeMap和HashMap谁更快?(大多数场景HashMap更快)│ 计算 hash值 │↓│ 计算桶索引 i │↓│ tab[i] 为空?│是 否↓ ↓创建新节点 哈希冲突判断├ 链表插入└ 红黑树插入put() 的底层流程是怎样的?为什么要使用高位扰动?

tang7mj的博客 1455

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

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

双列集合 HashMap以及TreeMap底层原理

双列集合一次需要存一对数据,分别为键和值键不能重复,值可以重复键和值是一一对应的,每个键只能找到自己对应的值键和值这个整体在Java中叫做“Entry对象”

lazy_girl_666的博客 863

黑马程序员-Map-TreeMap-HashMap-Map.Entry

Map 特点: 1. 以Key和Value,成对的形式存储数据。 2. Key不能重复 3. Set是基于Map而生成的。   常用方法: 1. 增: V put(K key, V value) 如果添加相同Key,不同的Value,则保存最后添加进来的Value。 boolean putAll(Map) 2. 删: clear() V remove(K key) ,底层

liuxiaohui_dh的专栏 540

黑马程序员——Map集合 HashMap TreeMap

Map集合练习

yd123ww的专栏 915

黑马程序员<<Map>>

--------------------ASP.Net+Android+IOS开发、.Net培训、期待与您交流! -------------------- 1. Map        Map也是一个集合,只是是以键值对存储的,常见的子类有Hashtable,HashMap,TreeMap。        Hashtable:是1.0版本,底层的数据结构是哈希表,键和值和不能是

奋斗的路 1718

黑马程序员---Vector、ArrayList、LinkedList、HashMap、TreeMap、HashTable 区别

Java中最常用的集合是Collection和Map两个接口的实现类,Collection用于存放多个单对象,Map用于存放Key-Value形式的键值对。     Collection又分为两种类型的接口:List和Set,其中List支持放入重复的对象,而Set不支持。      List接口常用的实现类有:ArrayList,LinkedList,Vector;Set接口常用的实

ChaoYangMemory的博客 753

【Java】【基础篇】day16:集合(HashMap、TreeMap)

前言 本期任务:毕向东老师Java视频教程学习笔记(共计25天) 原视频链接:黑马程序员_毕向东_Java基础视频教程 day01:编写HelloWorld程序 day02:操作符与条件选择语句 day03:循环语句与函数 day04:数组 day07:继承、抽象类与接口 day08:多态 day09:异常处理 day11:多线程 day12:线程安全与同步机制 day13:String类 day14:集合(ArrayList,LinkedList,HashSet) day15:集合(TreeSet)和泛

weixin_43868754的博客 420

黑马程序员——Java集合之Map

------- android培训、java培训、期待与您交流! ---------- 一、Map 1:特点 将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射到一个值。  2:Map |—Hashtable:底层是哈希表数据结构,是线程同步的。不可以存储null键,null值。 |—Properties:用来存储键值对型的配置文件的信息,可

Donald1989的博客 769

Java 黑马程序员学习笔记(进阶篇16)

当红黑树化时,链表节点会被替换为 TreeNode。底层数据结构仍为哈希表,但每个键值对额外通过。

2302_79807388的博客 2120

黑马程序员Java零基础视频教程_下部(P1-P51)

黑马程序员Java零基础视频教程_下部(P1-P51)

这里有一只小马吖 1591

黑马程序员——Java基础——Map集合

——Java培训、Android培训、iOS培训、.Net培训、期待与您交流! ——- Map集合:该集合存储键值对,一对一对往里存,而且要保证键的唯一性。 它的常用方法有: 1、添加:put(E key , V value)、putAll ( Map m) 2、删除:clear( ) 、remove ( key ) 3、判断:containsKey ( key ) 、isEmpt

twa42的博客 461
上一篇: 黑马程序员-java之TreeSet,Comparable,Comparator
下一篇: 黑马程序员-java之可变参数
forTomorrow_java
博客等级 码龄11年 0粉丝 14原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值