Java中的HashMap集合

鳄鱼君

发表文章数:643

热门标签

, , ,

Vieu四代商业主题

高扩展、安全、稳定、响应式布局多功能模板。

¥69 现在购买
首页 » Java » Java中的HashMap集合

HashMap集合底层是哈希表/散列表的数据结构,是一个数组和单向链表的结合体。
数组:在查询方面效率很高,随即增删方面效率很低
单向链表:在随机增删方面效率很高,在查询仿麦呢效率很低
哈希表将以上两种数据结构结合在一起,充分发挥它们各自的优点
放在HashMap集合key部分的元素,以及放在HashSet集合中的元素,需要同时重写hashCode和equals方法
HashMap集合默认初始化容量是16(必须是2的倍数),加载因子0.75,加载因子就是当HashMap集合底层数组的容量达到75%的时候,数组开始扩容

import java.util.HashMap;
import java.util.Map;
import java.util.Set;

public class HashMapTest {
    public static void main(String[] args) {
        // Integer是key,它的hashCode和equals都重写了
        Map<Integer,String> map = new HashMap<>();
        map.put(2,"eYuJun2");
        map.put(3,"eYuJun3");
        map.put(1,"eYuJun1");
        map.put(3,"eYuJun3");// key重复,value会被覆盖
        System.out.println(map.size());//3
        // 遍历map集合
        Set<Map.Entry<Integer,String>> set = map.entrySet();
        for (Map.Entry<Integer,String> entry:set){
            System.out.println(entry);
        }
    }
}
import java.util.*;

public class HashMapTest {
    public static void main(String[] args) {
        Student s1 = new Student("eYuJun1");
        Student s2 = new Student("eYuJun2");
        Student s3 = new Student("eYuJun3");
        Student s4 = new Student("eYuJun3");
        System.out.println(s4.equals(s3));

        System.out.println("s3的hashCode:" + s3.hashCode());
        System.out.println("s4的hashCode:" + s4.hashCode());
        Set<Student> students = new HashSet<>();
        students.add(s3);
        students.add(s4);
        System.out.println(students.size());
    }
}

class Student{
    private String name;

    public Student() {
    }
    public Student(String name) {
        this.name = name;
    }

    public String getName() {
        return name;
    }
    public void setName(String name) {
        this.name = name;
    }
    
    @Override
    public boolean equals(Object o) {
        if (this == o) return true;
        if (o == null || getClass() != o.getClass()) return false;
        Student student = (Student) o;
        return Objects.equals(name, student.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name);
    }
}

未经允许不得转载:作者:鳄鱼君, 转载或复制请以 超链接形式 并注明出处 鳄鱼君
原文地址:《Java中的HashMap集合》 发布于2020-08-17

分享到:
赞(0) 赏杯咖啡

评论 抢沙发

1 + 6 =


文章对你有帮助可赏作者一杯咖啡

支付宝扫一扫打赏

微信扫一扫打赏

Vieu4.6主题
专业打造轻量级个人企业风格博客主题!专注于前端开发,全站响应式布局自适应模板。
切换注册

登录

忘记密码 ?

您也可以使用第三方帐号快捷登录

Q Q 登 录
微 博 登 录
切换登录

注册