Java基础2-HashMap和TreeMap
HashMap
HashMap底层是一个数组,数组中每个元素是一个单链表(采用拉链法解决哈希冲突)。
JDK8之后,对HashMap底层数据结构(单链表)进行了改进
1.如果单链表元素超过8个,则将单链表转变为红黑树;
2.如果红黑树节点小于6时,再将红黑树变为单链表
这种方式也是为了提高检索效率,二叉树的检索会再次缩小扫描范围,提高效率。
HashMap 是数组和单链表的结合体
1、数组查询效率高,但是增删元素效率较低
2、单链表在随机增删元素方面效率较高,但是查询效率较低
3、HashMap将二者结合起来,充分利用它们各自的优点
注:放在HashMap中key的元素(或者放在HashSet中的元素)需要同时重写hashCode()和equals()方法!!
TreeMap(可排序)
TreeSet/TreeMap是自平衡二叉树
TreeSet/TreeMap迭代器采用的是中序遍历方式
TreeSet/TreeMap中key可以自动对String类型或8大基本类型的包装类型进行排序,但无法直接对自定义的类型进行排序
方法:可以选择TreeSet/TreeMap带比较器参数的构造器,并重写比较器中的compare方法
static class Cat{
int age;
public Cat(int age){
this.age = age;
}
}
public static void main(String[] args) {
Set<Cat> set = new TreeSet<>(new Comparator<Cat>() {
@Override
public int compare(Cat o1, Cat o2) {
return 0;
}
});
set.add(new Cat(1));
set.add(new Cat(2));
set.add(new Cat(3));
}
分类:
Java基础
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)