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);
相关推荐
旺仔学长 哈哈21 小时前
55384 消防安全教育与逃生演练小程序:知识学习、案例浏览和在线演练一站式实现
学习·小程序·消防教育·逃生演练
疯狂打码的少年21 小时前
【面向对象】面向对象概述:从“按步骤做”到“找谁来做”
笔记
程序员天天困21 小时前
Arthas Profiler 火焰图实战:CPU 热点在哪一目了然
java·jvm·后端
今夜有雨.21 小时前
C++JSON 解析器
c++·笔记·后端·学习·json
我命由我1234521 小时前
Android 在构建过程中,发现有两个依赖库都包含了相同路径的资源文件
android·java·开发语言·java-ee·kotlin·android-studio·android runtime
Mr+范21 小时前
电源诱骗芯片CH224K
单片机·学习
用户31268748772021 小时前
@Autowired 注入的是代理对象?Spring AOP 代理选择原理一次讲透
java·spring
@insist1231 天前
信息系统管理工程师-任务、标准、EDM 过程与关键域
java·大数据·数据库
幸福在路上wellbeing1 天前
AI 智能体开发 · Day 1 详细学习手册
人工智能·学习
木子杳衫1 天前
Java高级进阶 | 单元测试JUnit + 反射机制实战详解
java·junit·单元测试