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));

    }
复制代码

 

 

 

 

posted @   草莓小甜心  阅读(79)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET10 - 预览版1新功能体验(一)
点击右上角即可分享
微信分享提示