资讯专栏INFORMATION COLUMN

Map学习二之HashMap唯一性的解释

douzifly / 2379人阅读

摘要:存储自定义类型键值集合保证是唯一的作为的元素必须重写方法和方法以保证唯一存储自定义类型键值类型类就必须重写方法和方法以保证唯一类型可以重复创建集合往集合中添加元素女王英国秦始皇秦国普京俄罗斯女王毛里求斯使用和增强遍历集合存储自定义类型键

package com.itheima.demo02.Map;

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

/*

HashMap存储自定义类型键值
Map集合保证key是唯一的:
    作为key的元素,必须重写hashCode方法和equals方法,以保证key唯一

*/
public class Demo01HashMapSavePerson {

public static void main(String[] args) {
    show02();
}

/*
    HashMap存储自定义类型键值
    key:Person类型
        Person类就必须重写hashCode方法和equals方法,以保证key唯一
    value:String类型
        可以重复
 */
private static void show02() {
    //创建HashMap集合
    HashMap map = new HashMap<>();
    //往集合中添加元素
    map.put(new Person("女王",18),"英国");
    map.put(new Person("秦始皇",18),"秦国");
    map.put(new Person("普京",30),"俄罗斯");
    map.put(new Person("女王",18),"毛里求斯");
    //使用entrySet和增强for遍历Map集合
    Set> set = map.entrySet();
    for (Map.Entry entry : set) {
        Person key = entry.getKey();
        String value = entry.getValue();
        System.out.println(key+"-->"+value);
    }
}

/*
    HashMap存储自定义类型键值
    key:String类型
        String类重写hashCode方法和equals方法,可以保证key唯一
    value:Person类型
        value可以重复(同名同年龄的人视为同一个)
 */
private static void show01() {
    //创建HashMap集合
    HashMap map = new HashMap<>();
    //往集合中添加元素
    map.put("北京",new Person("张三",18));
    map.put("上海",new Person("李四",19));
    map.put("广州",new Person("王五",20));
    map.put("北京",new Person("赵六",18));
    //使用keySet加增强for遍历Map集合
    Set set = map.keySet();
    for (String key : set) {
        Person value = map.get(key);
        System.out.println(key+"-->"+value);
    }
}

}

package com.itheima.demo02.Map;

import java.util.Objects;

public class Person {

private String name;
private  int age;

public Person() {
}

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

@Override
public String toString() {
    return "Person{" +
            "name="" + name + """ +
            ", age=" + age +
            "}";
}

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

@Override
public int hashCode() {

    return Objects.hash(name, 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;
}

}

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/75303.html

相关文章

  • Map学习二之LinkedHash,HashTable,计算一个给定字符串每个字符出现次数

    package com.itheima.demo03.Map; import java.util.HashMap;import java.util.LinkedHashMap; /* java.util.LinkedHashMap entends HashMap Map 接口的哈希表和链接列表实现,具有可预知的迭代顺序。 底层原理: 哈希表+链表(记录元素的顺序) */public cla...

    Rocture 评论0 收藏0
  • python综合学习二之多进程

    摘要:本节讲学习的多进程。和之前的的不同点是丢向的函数有返回值,而的没有返回值。所以接下来让我们来看下这两个进程是否会出现冲突。 本节讲学习Python的多进程。 一、多进程和多线程比较 多进程 Multiprocessing 和多线程 threading 类似, 他们都是在 python 中用来并行运算的. 不过既然有了 threading, 为什么 Python 还要出一个 multip...

    gityuan 评论0 收藏0
  • Flask二之快速入门

    摘要:一一个最小的应用是程序实例,一个项目只能有一个程序实例路由装饰器视图函数返回一个字符串把程序保存为用解释器运行访问,会看见问候。路由装饰器这个函数的返回值称为响应,是客户端接收到的内容。 一.一个最小的Flask应用 from flask import Flask app = Flask(__name__) #app是程序实例,一个项目只能有一个程序实例 @app.route(/) #...

    XGBCCC 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<