HashMap集合

简介: HashMap集合

2.HashMap集合

2.1HashMap集合概述和特点【理解】

  • HashMap底层是哈希表结构的
  • 依赖hashCode方法和equals方法保证键的唯一
  • 如果键要存储的是自定义对象,需要重写hashCode和equals方法

2.2HashMap集合应用案例【应用】

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

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;

       if (age != student.age) return false;

       return name != null ? name.equals(student.name) : student.name == null;

   }

   @Override

   public int hashCode() {

       int result = name != null ? name.hashCode() : 0;

       result = 31 * result + age;

       return result;

   }

}

  • 测试类

public class HashMapDemo {

   public static void main(String[] args) {

       //创建HashMap集合对象

       HashMap<Student, String> hm = new HashMap<Student, String>();

       //创建学生对象

       Student s1 = new Student("林青霞", 30);

       Student s2 = new Student("张曼玉", 35);

       Student s3 = new Student("王祖贤", 33);

       Student s4 = new Student("王祖贤", 33);

       //把学生添加到集合

       hm.put(s1, "西安");

       hm.put(s2, "武汉");

       hm.put(s3, "郑州");

       hm.put(s4, "北京");

       //遍历集合

       Set<Student> keySet = hm.keySet();

       for (Student key : keySet) {

           String value = hm.get(key);

           System.out.println(key.getName() + "," + key.getAge() + "," + value);

       }

   }

}


相关文章
|
2月前
|
存储 Java 容器
HashMap 的基本操作【集合容器知识回顾 ⑤】
本文介绍了HashMap的基本操作,包括创建对象、添加、获取、删除和替换元素、获取所有key的集合、遍历HashMap,以及如何存储自定义类型键值对,并强调了当使用自定义对象作为键时需要重写equals和hashCode方法以确保正确的行为。
HashMap 的基本操作【集合容器知识回顾 ⑤】
|
3月前
|
存储 Java
HashMap与LinkedHashMap类型集合
【8月更文挑战第4天】`HashMap` 是基于哈希表实现的键值对存储结构,提供快速的查找、插入和删除操作,但不保证元素顺序。适用于不关心顺序且需高效操作的场景。 `LinkedHashMap` 继承自 `HashMap`,保持了元素的插入或访问顺序。适合需要按特定顺序遍历元素的应用,如按添加顺序显示购物车商品。其操作效率与 `HashMap` 相近。
|
5月前
|
Java
Java集合-----HashMap实例
Java集合-----HashMap实例
42 5
|
存储 安全 Java
Java集合Map之HashMap常用操作
在我看来 , 链表是为了解决hash碰撞使用的一种方法 : 拉线法 , 而红黑树是为了解决&quot;拉的这个线&quot;(链表存储的元素太多)过长的话元素遍历慢的问题
61 2
|
6月前
|
存储 缓存 Rust
Rust 笔记:Rust 语言中哈希结构(哈希映射,HashMap)、集合(哈希集,HashSet)及其使用
Rust 笔记:Rust 语言中哈希结构(哈希映射,HashMap)、集合(哈希集,HashSet)及其使用
947 0
|
6月前
|
存储 算法 安全
认真学习Java集合之HashMap的实现原理
认真学习Java集合之HashMap的实现原理
70 0
认真学习Java集合之HashMap的实现原理
|
11月前
|
安全 Java 应用服务中间件
史上最全的Java容器集合之HashMap(源码解读)(二)
史上最全的Java容器集合之HashMap(源码解读)(二)
51 0
史上最全的Java容器集合之HashMap(源码解读)(二)
|
11月前
|
存储 Java 索引
史上最全的Java容器集合之HashMap(源码解读)(一)
史上最全的Java容器集合之HashMap(源码解读)(一)
56 0
|
存储 算法 Java
java集合框架Map之HashMap底层原理解析
阈值(threshold) = 负载因子(loadFactor) x 容量(capacity) , 当HashMap中的table数组(桶)的长度 >= 阈值的时候就会自动触发扩容机制
66 0
|
存储 数据采集 Java
从数据库中提取大量数据到 HashMap 集合中,优化方案有以下几点:
从数据库中提取大量数据到 HashMap 集合中,优化方案有以下几点:
254 0