zoukankan      html  css  js  c++  java
  • HashSet

    HashSet的底层数据结结构是哈希表,哈希表用于存储哈希值,

        hashSet中比较对象是否一样的是自动调用对象的hashCode和equals方法(hash值是操作系统给的,equals是Object继承的。自己也可以重写),当hash值相同时才调用equals,否则不要调用,只有当hashcode与equals值都相等是才视为同一对象。String类重新了equals方法。所以一般用hashSet时,要对类重写hashCode 和equals方法。

    /

    未重写时比较的是地址==。内容一样也会存进去

    /

    public class HashSetTest {

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Set s = new HashSet();
    s.add(new Person5("xiaoli",23));
    s.add(new Person5("xiaoli",23));
    s.add(new Person5("xiaoli",23));
    s.add(new Person5("xiaoli",23));
    Iterator it = s.iterator();
    while(it.hasNext()){
    Person5 p1 =(Person5)it.next();
    System.out.println(p1.getName()+"----"+p1.getAge());
    }
    }

    }

    class Person5 {
    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;
    }
    public Person5(String name, int age) {
    super();
    this.name = name;
    this.age = age;
    }

    }

    结果是:

    xiaoli----23
    xiaoli----23
    xiaoli----23
    xiaoli----23

    /**

    重写hashCode和equals后:

    **/


    public class HashSetTest {

    public static void main(String[] args) {
    // TODO Auto-generated method stub
    Set s = new HashSet();
    s.add(new Person5("xiaoli",23));
    s.add(new Person5("xiaoli",23));
    s.add(new Person5("xiaoli",23));
    s.add(new Person5("xiaoli",23));
    Iterator it = s.iterator();
    while(it.hasNext()){
    Person5 p1 =(Person5)it.next();
    System.out.println(p1.getName()+"----"+p1.getAge());
    }
    }

    }

    class Person5 {
    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;
    }
    public Person5(String name, int age) {
    super();
    this.name = name;
    this.age = age;
    }

    public int hashCode(){
    return this.age;

    }

    public boolean equals(Object o){
    Person5 p =(Person5)o;
    if(!(p instanceof Person5))
    return false;
    return this.name.equals(p.name);
    }

    }

    结果是:

    xiaoli----23

  • 相关阅读:
    AWVS 安全渗透扫描
    Nmon 监控结果分析
    Jmeter 插件图表分析
    Nmon 安装
    子母钟系统(卫星时钟系统)在医院网络中的架设与设计
    从NTP网络授时到社交GPS千奇百怪的应用方式
    NTP网络时钟系统技术参数与详细介绍
    GPS北斗子母钟系统在某机场系统中的应用
    GPS北斗时间频率信号源的定义及简介
    ntp对时服务器同步网络中计算机详细配置
  • 原文地址:https://www.cnblogs.com/daxiong225/p/4588094.html
Copyright © 2011-2022 走看看