Java实现的散列表
来源:互联网 发布:淘宝买电棍犯法吗 编辑:程序博客网 时间:2024/05/17 21:22
Java实现的散列表,如下代码: public class MyHashtable{ private int manyItems; //表中元素个数 private Object[]keys; private Object[]data; private boolean []hasBeenUsed; //若索引i处存在元素,则hasBeenUsed[i]为ture,否则为false public MyHasht
Java实现的散列表,如下代码:
- public class MyHashtable {
- private int manyItems;//表中元素个数
- private Object[] keys;
- private Object[] data;
- private boolean[] hasBeenUsed;//若索引i处存在元素,则hasBeenUsed[i]为ture,否则为false
- public MyHashtable(int capacity) {
- if(capacity <= 0)
- throw new IllegalArgumentException("capacity is negative");
- keys = new Object[capacity];
- data = new Object[capacity];
- hasBeenUsed = new boolean[capacity];
- }
- //hash函数
- private int hash(Object key) {
- return Math.abs(key.hashCode()%data.length);
- }
- //当前索引发生冲突,找下一索引
- private int nextIndex(int i) {
- if(i + 1 == data.length) {
- return 0;
- } else {
- return i + 1;
- }
- }
- //如果在表中找到指定的关键字,返回值为关键字的索引,否则返回-1
- private int findIndex(Object key) {
- int count = 0;
- int i = hash(key);
- while((count < data.length) && hasBeenUsed[i]) {
- if(key.equals(keys[i])) {
- return i;
- } else {
- count++;
- i = nextIndex(i);
- }
- }
- return -1;
- }
- public Object get(Object key) {
- int index = findIndex(key);
- if(index == -1) {
- return null;
- } else {
- return data[index];
- }
- }
- public Object put(Object key, Object element) {
- int index = findIndex(key);
- Object answer;
- if(index != -1) {
- answer = data[index];
- data[index] = element;
- return answer;
- } else if(manyItems < data.length) {
- index = hash(key);
- while(keys[index] != null) {
- index = nextIndex(index);
- }
- keys[index] = key;
- data[index] = element;
- hasBeenUsed[index] = true;
- manyItems++;
- return null;
- } else {
- throw new IllegalStateException("Hashtable is full!");
- }
- }
- public Object remove(Object key) {
- int index = findIndex(key);
- Object answer = null;
- if(index != -1) {
- answer = data[index];
- data[index] = null;
- keys[index] = null;
- manyItems--;
- }
- return answer;
- }
- public boolean contains (Object key) {
- return (findIndex(key) != -1);
- }
- public static void main(String[] args) {
- MyHashtable table = new MyHashtable(100);
- table.put(1, "china");
- table.put(2, "美国");
- System.out.println(table.get(2).toString());
- }
- }
0 0
- Java实现的散列表
- java实现散列表
- 散列表的java源码实现
- 链接法散列表的 java 实现
- java反向列表的实现
- hash算法 (hashmap 实现原理) Java实现的散列表
- hash算法 (hashmap 实现原理) Java实现的散列表
- 散列表的实现
- 数据结构-Java实现散列表
- Java中利用散列表实现股票行情的查询
- 用java实现的哈希表(散列表)
- 链表实现的散列表(Java版)
- 使用JAVA SWING 实现列表以及列表的滚动条
- Java循环列表的简单实现
- 数据结构(Java)——列表的实现
- Java实现列表的创建,插入,删除
- java web 下拉列表联动的实现
- 散列表的简单实现
- javaweb简单的登录注册功能实现
- linux 2>&1的含义
- Maven学习11之jre错误
- 【Latex】Latex小白入门(1)——如何将论文插图转换为Latex需要的*.eps格式
- 文章标题
- Java实现的散列表
- 微信JS接口
- C# DateTime.Now.ToString("yyyy-MM-dd");
- Java_io体系之CharArrayReader、CharArrayWriter简介
- hash算法(hashmap实现原理)
- socket的概念与网络通信要素
- ThreadPoolExecutor使用和思考(上)-线程池大小设置与BlockingQueue的三种实现区别
- C数列 vijos P1350 IDS 搜索
- 启动摄像头,采集图片