首页 > 其他分享 >创建一个HashMap集合,键是学生对象(Student),值是居住地 (String)。存储四个键值对元素,并遍历。要求保证键的唯一性:如果学生对象的成员变量值相同,我们就认为是同一个对象

创建一个HashMap集合,键是学生对象(Student),值是居住地 (String)。存储四个键值对元素,并遍历。要求保证键的唯一性:如果学生对象的成员变量值相同,我们就认为是同一个对象

时间:2022-10-17 18:57:46浏览次数:52  
标签:HashMap 对象 age String 键值 Student public name

//学生类
//注意:需要重写两个方法hashCode()和equals()
package package6;

import java.util.Objects;

public class Student {
    private String name;
    private int age;

    public Student() {
    }

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

    public String getName() {
        return name;
    }

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

    public int getAge() {
        return age;
    }

    public void setAge(int age) {
        this.age = age;
    }

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

    @Override
    public int hashCode() {
        return Objects.hash(name, age);
    }
}
//测试类
package package6;

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

public class HashMapDemo {
    public static void main(String[] args) {
        //创建HashMap集合对象
        HashMap<Student, String> hashMap = new HashMap<>();
        //创建学生对象
        Student s1 = new Student("张三", 21);
        Student s2 = new Student("李四", 22);
        Student s3 = new Student("王五", 23);
        Student s4 = new Student("王五", 23);
        //将学生对象存储到集合中
        hashMap.put(s1,"安庆");
        hashMap.put(s2,"南京");
        hashMap.put(s3,"合肥");
        hashMap.put(s4,"芜湖");


        //遍历集合
        Set<Map.Entry<Student, String>> entrySet = hashMap.entrySet();
        for(Map.Entry<Student, String> me:entrySet){
            Student key = me.getKey();
            String value = me.getValue();
            System.out.println(key.getName()+", "+key.getAge()+", "+value);
        }
    }
}

运行结果

张三, 21, 安庆
李四, 22, 南京
王五, 23, 芜湖

标签:HashMap,对象,age,String,键值,Student,public,name
From: https://www.cnblogs.com/knlf/p/16800228.html

相关文章

  • 异常处理和生成器对象
    目录一.异常常见类型二.异常处理语法结构1.基本语法结构2.查看错误信息3.针对不同的错误类型定制不同的解决方案4.万能异常Exception/BaseException5.结合else使用6.结合f......
  • 6_面向对象基础
    1.面向对象和面向过程面向过程重点在于:步骤面向对象重点在于:对象一般大型项目都采用面向对象编程思维2.面向对象三大特性object:所有类的父类,超类,上帝类,......
  • 7_面向对象高级
    1.单继承知识点:单继承:一个类继承一个父类1.单继承格式calss子类名(父类名):pass 2.注意:一个父类可以有多个子类示例:#1.定义父类classPe......
  • HashMap的尾部遍历问题 (Tail Traversing)
    JDK1.7的HashMap在实现resize()时,新table[]的列表采用LIFO方式,即队头插入。这样做的目的是:避免尾部遍历。避免尾部遍历是为了避免在新列表插入数据时,遍历到队尾的位置。因......
  • 进入python的世界_day16_python基础——异常捕获的处理、生成器对象、生成器表达式
    一、异常捕获1.错误类型语法错误>>>syntaxerror名字错误>>>namerror索引错误>>>Indexerror缩进错误>>>indentationerror等等......2.异常处理语法结构1.语法结......
  • python基础之异常处理、生成器对象、生成器表达式
    A-Z65-90a-z97-122迭代取值=for循环取值(每次取值都依赖于上一次取值)python基础之异常处理、生成器对象、生成器表达式目录一、异常处理语法结构1.异常的常见类型2......
  • ResultSet结果集对象 封装查询结果
    booleannext():游标向下移动一行,判断当前行是否是最后一行末尾(是否有数据),如果是,则返回false 如果不是则返回truegetxxx(参数):获取数据XXX:代表数据类型 如:int getIn......
  • 对象拓展
    属性的简洁表示法使用简写属性的办法:constbaz={foo};等价于constbaz={foo:foo};ES6表达对象的新形式,使用表达式的情况:letpropkey="dd";letobj={[p......
  • java 集合对象排序
    关于集合内部排序,采用comparator方法做:1.按属性数字大小排序:点击查看代码taskBoxs.sort(newComparator<TCComponent>(){ @Override publicintcompare(TCCom......
  • ConcurrentHashMap源码,看我这篇就够了
    思考:HashTable是线程安全的,为什么不推荐使用?HashTable是一个线程安全的类,它使用synchronized来锁住整张Hash表来实现线程安全,即每次锁住整张表让线程独占,相当于所有线程进......