/*HashSet 类实现哈希表(散列表)
我们应该为插入到 哈希表的各个对象重写 hashCode()和equals() 方法
String 类重写的 hashCode() 是根据字符串计算的
Object 类的 hashCode() 是根据内存地址计算散列地址
哈希表只能通过迭代器迭代元素 Iterator
*/
import java.util.*;
class HashTest
{
public static void main(String []args)
{
HashSet hs=new HashSet() ; //HashSet 实现了Set接口不能 包含重复值
hs.add(new Student(1,"li"));
hs.add(new Student(2,"wang"));
hs.add(new Student(1,"wangwu"));
hs.add(new Student(1,"li"));
Iterator i=hs.iterator(); //获得哈希表迭代器
while(i.hasNext()) //通过迭代器输出元素
{
System.out.println(i.next());
}
}
}
class Student
{
int num ;
String name;
Student(int num,String name)
{
this.num=num;
this.name=name;
}
public String toString () //重写toString
{
return num+":"+name;
}
public int hashCode() //重写 hashCode()
{
return num*name.hashCode();
}
public boolean equals(Object o) //重写equals()方法
{
Student s=(Student)o;
return num==s.num && name.equals(s.name);
}
}
java HashSet类实现哈希表
时间: 2024-10-11 23:38:37
java HashSet类实现哈希表的相关文章
链表类具有哈希表的功能
using System; namespace Study{ /// <summary> /// CChain 的摘要说明. /// </summary> public class CChain { public class CChainNode { public object Data; public CChainNode NextChainNode; public CChainNode PreviousChainNode; public object T
上古时代 Objective-C 中哈希表的实现
因为 ObjC 的 runtime 只能在 Mac OS 下才能编译,所以文章中的代码都是在 Mac OS,也就是 x86_64 架构下运行的,对于在 arm64 中运行的代码会特别说明. 写在前面 文章会介绍上古时代 Objective-C 哈希表,也就是 NXHashTable : NXHashTable 的实现 NXHashTable 的性能分析 NXHashTable 的作用 NXHashTable 的实现有着将近 30 年的历史,不过仍然作为重要的底层数据结构存储整个应用中的类. 文中
java中哈希表及其应用详解_java
哈希表也称为散列表,是用来存储群体对象的集合类结构. 什么是哈希表 数组和向量都可以存储对象,但对象的存储位置是随机的,也就是说对象本身与其存储位置之间没有必然的联系.当要查找一个对象时,只能以某种顺序(如顺序查找或二分查找)与各个元素进行比较,当数组或向量中的元素数量很多时,查找的效率会明显的降低. 一种有效的存储方式,是不与其他元素进行比较,一次存取便能得到所需要的记录.这就需要在对象的存储位置和对象的关键属性(设为 k)之间建立一个特定的对应关系(设为 f),使每个对象与一个唯一的存储位置
哈希表问题(Java)冰天雪地跪求
问题描述 我想用Java写哈希表要用出留余数法来构造哈希表,用拉链法解决冲突问题,但是,java中没有指针,想用一个结构体(存放数据和一个next来模拟指针),但是不知道如何实现,各位大侠帮帮忙!有代码最好, 解决方案 解决方案二:Java自带的Map不好用么?Java是没有指针,但是照样有引用,只要你不对"指针"做运算,其他和C是一样的.解决方案三:问题是:我刚接触java想不用Java自带的map,怎么办?解决方案四:引用2楼xiaoshun007的回复: 问题是:我刚接触java
AS2.0中实现数据结构-哈希表
数据|数据结构 在游戏制作中我们经常需要存储一些离散的对象数据,比如道具箱里的道具,经常需要执行插入和删除操作,而且道具之间没有联系是无序排列的.有些人会说直接用数组不就得了,但是有大量数据存储时的数组的删除插入操作的效率是很低的.因此我们需要哈希表这样的可以提供快速的插入和删除,查找操作的数据结构,不论哈希表中有多少数据,插入和删除操作只需要接近常量的时间:即O(1)的时间级.既然这么好那么我们的AS可以实现吗?当然可以!AS发展到AS2.0,已经成为在语法上更接近于Java + Pascal
HashSet类的实现原理和特点
HashSet实现Set接口,由哈希表支持.它不保证set的迭代顺序 特别是它不保证该顺序恒久不变 public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable { static final long serialVersionUID = -5024744406713321676L; // 底层使用HashMap来保存HashSet中所有
哈希表
定义 一般的线性表.树,数据在结构中的相对位置是随机的,即和记录的关键字之间不存在确定的关系,因此,在结构中查找记录时需进行一系列和关键字的比较.这一类查找方法建立在"比较"的基础上,查找的效率依赖于查找过程中所进行的比较次数. 若想能直接找到需要的记录,必须在记录的存储位置和它的关键字之间建立一个确定的对应关系f,使每个关键字和结构中一个唯一的存储位置相对应,这就是哈希表. 哈希表又称散列表.哈希表存储的基本思想是:以数据表中的每个记录的关键字 k为自变量,通过一种函数H(k)计算出
java uimanager-关于java UIManager类
问题描述 关于java UIManager类 java 中UIManager类的put(Object key,Obj ect value)方法怎么用啊,若我要设置组 件的字体,例如put("JMenu.font",new Fo nt(...)),并没什么用,还有为什么key要 是一个字符串呢,而且为什么是"组件 名.font"呢?请高手解答下 解决方案 http://www.apihome.cn/api/java/UIManager.html 解决方案二: UIMa
数据结构与算法07 之哈希表
哈希表也称为散列表,是根据关键字值(key value)而直接进行访问的数据结构.也就是说,它通过把关键字值映射到一个位置来访问记录,以加快查找的速度.这个映射函数称为哈希函数(也称为散列函数),映射过程称为哈希化,存放记录的数组叫做散列表.比如我们可以用下面的方法将关键字映射成数组的下标:arrayIndex = hugeNumber % arraySize. 哈希化之后难免会产生一个问题,那就是对不同的关键字,可能得到同一个散列地址,即同一个数组下标,这种现象称为冲突,那