hashset數據結構,哈希集合——hashSet

 2023-12-06 阅读 26 评论 0

摘要:/** ?? ?哈希集合特點:存取順序不確定,同一個哈希值的位置可以存放多個元素, ?? ??? ??? ??? ?? 哈希集合存放元素的時候是先判斷哈希地址值:hashCode()是否相同,如果不同則直接存放; ?? ??? ??? ??? ?? 如果哈希地址值相同則再調用equal

/**
?? ?哈希集合特點:存取順序不確定,同一個哈希值的位置可以存放多個元素,
?? ??? ??? ??? ?? 哈希集合存放元素的時候是先判斷哈希地址值:hashCode()是否相同,如果不同則直接存放;
?? ??? ??? ??? ?? 如果哈希地址值相同則再調用equals()方法對元素進行判斷如果元素不同則存放,如果元素相同則不存放.

?? ??? ??? ??? ?? 對于判斷元素是否存在依賴的是hashCode()和equals()方法

?? ?區別:ArrayList區別元素的方法只依賴于equals();
?? ??? ?? HashSet? 區別元素的方法依賴于hashCode()和equals();
*/

import java.util.*;
class HashSetDemo
{
?? ?public static void main(String[] args)
?? ?{
?? ??? ?HashSet ha=new HashSet();
?? ??? ?ha.add(new Person("張三",10));
?? ??? ?ha.add(new Person("李四",11));
?? ??? ?ha.add(new Person("王五",12));
?? ??? ?ha.add(new Person("張三",10));
?? ??? ?Iterator it = ha.iterator();//迭代器是哈希集合唯一的遍歷方式
?? ??? ?while(it.hasNext())
?? ??? ?{
?? ??? ??? ?Person p=(Person)it.next();
?? ??? ??? ?sop(p.getName()+":"+p.getAge());//只有Person類中才有gerName()方法,所以必須把it.next()強制轉換成Person對象
?? ??? ?}
?? ?}
?? ?public static void sop(Object obj)
?? ?{
?? ??? ?System.out.println(obj);
?? ?}
}
class Person
{
?? ?private String name;
?? ?private int age;
?? ?Person(String name,int age)
?? ?{
?? ??? ?this.name=name;
?? ??? ?this.age=age;
?? ?}
?? ?public String getName()
?? ?{
?? ??? ?return name;
?? ?}
?? ?public int getAge()
?? ?{
?? ??? ?return age;
?? ?}
?? ?public boolean equals(Object obj)//此方法是在哈希集合中存貯元素的時候自動調用的 用來判斷同一個哈希地址值上的對象是否相同
?? ?{
?? ??? ?if(!(obj instanceof Person))//判斷obj是否是Person的一個實例
?? ??? ??? ?return false;
?? ??? ?Person p=(Person)obj;//強制吧obj轉換成Person類型
?? ??? ?
?? ??? ?return this.name.equals(p.name)&&this.age==p.age;//當前對象與引用p所指引的對象判斷名字與年齡是否都相同(即當前要存貯的對象與哈希集合中已有的對象做比較。)
?? ?}
?? ?public int hashCode()//哈希值 在存儲元素的時候會自動調用接口collection中的hashCode方法,如果此方法被復寫那么就自動調用復寫后的方法
?? ?{
?? ??? ?System.out.println(this.name.hashCode()+this.age);
?? ??? ?return this.name.hashCode()+this.age;
?? ?}
?? ?
}

轉載于:https://www.cnblogs.com/james1207/p/3278049.html

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://hbdhgg.com/2/190431.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 匯編語言學習筆記 Inc. 保留所有权利。

底部版权信息