ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

HashMap

2022-05-16 21:32:35  阅读:149  来源: 互联网

标签:stuNo HashMap Student1 scores public name


HashMap

概述

HashMap是Map接口的十分重要的实现类
底层实现是数组+链表+红黑树
特点:无序,无脚标,键不可重复,值可重复

实践

如果HashMap的key或value是自定义类,想要两个内容相同的实例定义为同一个实例,需要重写hashcode和equals方法,总结:包含hash的集合元素如果是自定义类,内容相同的实例想要定义为一个实例,需要重写hashcode和equals,比如HashSet和HashMap;List实现类仅需要重写equals方法;Tree相关集合仅需重写比较方法

package com.qianfeng.collection;

import java.util.HashMap;
import java.util.Map;
import java.util.Objects;

/**
 * 功能描述
 *
 * @since 2022-05-16
 */
public class HashMapDemo {
    public static void main(String[] args) {
        Student1 student1 = new Student1("zhangsan", 1);
        Student1 student2 = new Student1("lisi", 2);
        Student1 student3 = new Student1("wangwu", 3);
        HashMap<Student1, String> scores = new HashMap<>();
        scores.put(student1, "89");
        scores.put(student2, "80");
        scores.put(student3, "78");
        System.out.println(scores);

        scores.remove(student1);

        for (Student1 score : scores.keySet()) {
            System.out.println(score + "========" + scores.get(score));
        }

        for (Map.Entry entry : scores.entrySet()) {
            System.out.println(entry.getKey() + "---------" + entry.getValue());
        }

        System.out.println(scores.containsKey(new Student1("lisi", 2)));
        System.out.println(scores.containsValue("88"));

    }
}

class Student1 {
    private String name;
    private int stuNo;

    public Student1() {
    }

    public Student1(String name, int stuNo) {
        this.name = name;
        this.stuNo = stuNo;
    }

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public int getStuNo() {
        return stuNo;
    }

    public void setStuNo(int stuNo) {
        this.stuNo = stuNo;
    }

    @Override
    public String toString() {
        return "Student{" +
                "name='" + name + '\'' +
                ", stuNo=" + stuNo +
                '}';
    }

    @Override
    public boolean equals(Object o) {
        if (this == o) {
            return true;
        }
        if (o == null || getClass() != o.getClass()) {
            return false;
        }
        Student1 student1 = (Student1) o;
        return stuNo == student1.stuNo && Objects.equals(name, student1.name);
    }

    @Override
    public int hashCode() {
        return Objects.hash(name, stuNo);
    }
}
package com.qianfeng.collection;

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

/**
 * 功能描述
 *
 * @since 2022-05-16
 */
public class HashMapDemo2 {
    public static void main(String[] args) {
        Student1 student1 = new Student1("zhangsan", 1);
        Student1 student2 = new Student1("lisi", 2);
        Student1 student3 = new Student1("wangwu", 3);
        HashMap<Student1, Student1> scores = new HashMap<>();
        scores.put(student1, student1);
        scores.put(student2, student2);
        scores.put(student3, student3);
        System.out.println(scores);

        scores.remove(student1);

        for (Student1 score : scores.keySet()) {
            System.out.println(score + "========" + scores.get(score));
        }

        for (Map.Entry entry : scores.entrySet()) {
            System.out.println(entry.getKey() + "---------" + entry.getValue());
        }

        System.out.println(scores.containsKey(new Student1("lisi", 2)));
        System.out.println(scores.containsValue(new Student1("lisi", 2)));

    }
}

标签:stuNo,HashMap,Student1,scores,public,name
来源: https://www.cnblogs.com/Oh-mydream/p/16278597.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有