zoukankan      html  css  js  c++  java
  • HashMap集合

    HashMap集合特点(用法与特点类似于HashSet集合):

    1.无序,不允许重复(无序指元素顺序与添加顺序不一致);
    2.底层数据结构是哈希表
    3.HashMap内部对”键”用Set进行散列存放。所以根据”键”去取”值”的效率很高。
    4.键是唯一的,值是可以重复的
    5.能出现最多一个null键,任意多个null值

    剔除重复的原理—–>同HashSet

    先调用hashCode,若相同,再调用equals
    可根据自己的需求重写hashCode和equals
    注意:这里只是比较键值是否重复,不需要比较value值

    练习:

    定义一个Person类,属性有name,age。
    若名字和年龄相同,则为同一个对象。
    创建一个HashSet集合,键为Person类,值为个人评价
    并遍历HashSet集合。

    Person类

    package HashMap;
    //定义一个Person类,属性有name,age。
    //若名字和年龄相同,则为同一个对象。
    //创建一个HashSet集合,键为Person类,值为个人评价
    public class Person {
        private String name;
        private int 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 String toString() {
            return "Person [name=" + name + ", age=" + age + "]";
        }
        public Person(String name, int age) {
            super();
            this.name = name;
            this.age = age;
        }
        public Person() {
            super();
        }
        @Override
        public int hashCode() {
            final int prime = 31;
            int result = 1;
            result = prime * result + age;
            result = prime * result + ((name == null) ? 0 : name.hashCode());
            return result;
        }
        @Override
        public boolean equals(Object obj) {
            if (this == obj)
                return true;
            if (obj == null)
                return false;
            if (getClass() != obj.getClass())
                return false;
            Person other = (Person) obj;
            if (age != other.age)
                return false;
            if (name == null) {
                if (other.name != null)
                    return false;
            } else if (!name.equals(other.name))
                return false;
            return true;
        }
    }
    

    测试类:

    package HashMap;
    
    import java.util.HashMap;
    import java.util.Set;
    
    public class Test {
    
        public static void main(String[] args) {
            HashMap<Person, String> map=new HashMap<>();
            //若名字和年龄相同,则为同一个对象
            map.put(new Person("乔布斯", 90), "苹果之父,非常厉害的人!");
            map.put(new Person("乔布斯", 90), "我以前没用听说过他,孤陋寡闻了!!");
            map.put(new Person("乔布斯1", 90), "我以前没用听说过他,孤陋寡闻了!!");
            map.put(new Person("琼斯", 50), "我以前没用听说过他,孤陋寡闻了!!");
    
            Set<Person> set=map.keySet();
            for (Person person : set) {
                System.out.println(person+","+map.get(person));
            }
        }
    }
    
  • 相关阅读:
    解决Java版CKFinder无法显示缩略图问题
    python视频教程大全
    关于Linux vi命令 vi命令一览表
    Python快速教程
    Linux的概念与体系
    每天一个linux命令目录
    每天一个linux命令(31): /etc/group文件详解
    每天一个linux命令(30): chown命令
    每天一个linux命令(29):chgrp命令
    十大Material Design开源项目
  • 原文地址:https://www.cnblogs.com/TCB-Java/p/6770134.html
Copyright © 2011-2022 走看看