记一点偶然刷算法题偶然发现大佬对HashMap的妙用

这段代码展示了当向HashMap中添加单个字母键时,由于使用的是字符串的ASCII值作为哈希函数的结果,导致keySet按字母顺序排列。ASCII值决定了键的哈希冲突情况。
摘要由CSDN通过智能技术生成

当往HashMap里加单个字母时,对应的HashMap的keySet居然是按字母序排列的

import java.util.HashMap;
public class Solution {
    public static void main(String[] args) {
        HashMap<String, Integer> map = new HashMap<>();
        for (int i = 0; i < 26; i++) {
            char c = (char) ('a' + i);
            map.put(String.valueOf(c), 0);
            String tmp = "";
            for (String s : map.keySet()) {
                tmp += s;
            }
            System.out.println(tmp);
        }
        for (int i = 0; i < 26; i++) {
            char c = (char) ('A' + i);
            map.put(String.valueOf(c), 0);
            String tmp = "";
            for (String s : map.keySet()) {
                tmp += s;
            }
            System.out.println(tmp);
        }
    }
}

以上代码的执行结果如下

a
ab
abc
abcd
abcde
abcdef
abcdefg
abcdefgh
abcdefghi
abcdefghij
abcdefghijk
abcdefghijkl
abcdefghijklm
abcdefghijklmn
abcdefghijklmno
abcdefghijklmnop
abcdefghijklmnopq
abcdefghijklmnopqr
abcdefghijklmnopqrs
abcdefghijklmnopqrst
abcdefghijklmnopqrstu
abcdefghijklmnopqrstuv
abcdefghijklmnopqrstuvw
abcdefghijklmnopqrstuvwx
abcdefghijklmnopqrstuvwxy
abcdefghijklmnopqrstuvwxyz
Aabcdefghijklmnopqrstuvwxyz
ABabcdefghijklmnopqrstuvwxyz
ABCabcdefghijklmnopqrstuvwxyz
ABCDabcdefghijklmnopqrstuvwxyz
ABCDEabcdefghijklmnopqrstuvwxyz
ABCDEFabcdefghijklmnopqrstuvwxyz
ABCDEFGabcdefghijklmnopqrstuvwxyz
ABCDEFGHabcdefghijklmnopqrstuvwxyz
ABCDEFGHIabcdefghijklmnopqrstuvwxyz
ABCDEFGHIJabcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKabcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLabcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMabcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNabcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOabcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPabcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQabcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRabcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSabcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTabcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUabcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVabcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWabcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXabcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYabcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz

原理大概是字符串的hasecode方法针对单个由字母组成的字符串返回的就是它的asscill码

a-z为 97-122

A-Z为65-90

在hashmap的哈希值刚好不冲突所有就按字母序了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

qq_29484773

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值