Java学习笔记_Day23(HashMap)

HashMap的特点

  1. HashMap是Map里面的一个实现类
  2. 直接使用Map里面的方法就可以了
  3. 特点是由键决定的:无序,不重复,无索引
  4. HashMap和HashSet底层原理是一样的,都是哈希表结构

LinkedHashMap

  • 由键决定:有序,不重复,无索引
  • 存储和取出的元素顺序一致
  • 原理:底层数据结构依然是哈希表,只是每个键值对元素又额外的多一个双链表的机制记录存储的顺序

TreeMap

  • TreeMap和TreeSet底层原理一样,都是红黑树结构
  • 不重复,无索引,可排序
  • 对键进行排序
  • 默认从小到大排序

代码书写两种排序规则

  • 实现Comparable接口,指定比较规则
复制代码
@Override
public int compareTo(Student o) {
    int i=this.getAge()-o.getAge();
    i=i==0?this.getName().compareTo(o.getName()):i;
    return i;
}
  • 创建集合时传递Comparator比较器对象,指定比较规则
复制代码
TreeMap<Integer, String> tm = new TreeMap<>(new Comparator<Integer>() {

    @Override
    public int compare(Integer o1, Integer o2) {
        return o2-o1;
    }
});

统计字符串字母出现的次数

复制代码
String s="aababccddacbdaac";
TreeMap<Character,Integer> map=new TreeMap<>();
for(int i=0;i<s.length();i++){
    char c=s.charAt(i);
    if(map.containsKey(c)){
        map.put(c,map.get(c)+1);
    }
    else {
        map.put(c,1);
    }
}
System.out.println(map);
相关推荐
HRBorderInsight2 小时前
马来西亚人均收入一个月多少钱,个人薪资和家庭收入要分开看
经验分享·笔记
Pniubi2 小时前
HashMap的扩容和树化边界
java·开发语言
Mikko73 小时前
用 Java 复刻了高中时在塞班上玩的「熔岩矿车」:纯 Swing、零依赖、没有一张图片,一个 jar 双击就能玩
java·游戏开发·swing
知了学历孙老师3 小时前
小自考的校考和统考,出题方和难度差在哪
java·大数据·前端
Java爱好狂.3 小时前
Java初学者如何一周速通SpringBoot!
java·spring boot·后端·spring·高并发·架构师·java面试
又見山3 小时前
本地 Markdown 与数据主权:你的笔记到底属于谁
笔记·obsidian
秋饼4 小时前
LLM API密钥动态轮换实战:Spring Vault + Spring AI + 多Provider路由
java·ai·技术分享·后端开发
撩得Android一次心动5 小时前
Jetpack Compose 知识点整理2【个人用】
android·笔记·学习·kotlin·compose
cao23335 小时前
关于 x1 y1 等变量名冲突的指正(校对版)
笔记
福兮说5 小时前
JSON 格式正确,数据就可靠吗?我用一份自编配置检查类型与空值
java·前端·json