hashMap的实现原理-自定义简单的hashMap
2018-01-12 16:57
351 查看
package ds;
public class MyHashMap {
private static int length = 10;
private MyEntry[] entries;
private int index = 0;
public MyHashMap() {
super();
initinalize();
}
public void initinalize() {
entries = new MyEntry[length];
}
// 添加键值对
public String put(String key, String value) {
// 要添加到的链表的下表
int index = key.hashCode() % length;
// 链表当前存储的第一个元素
MyEntry privious = entries[index];
// 有相同的key就覆盖
for (MyEntry entry = entries[index]; entry != null; entry = entry.next) {
if (entry.getKey().equals(key)) {
// 替换value
String oldValue = entry.getValue();
entry.setValue(value);
return oldValue;
}
}
// 没有相同的key就添加,并且把这个键值对放在头部
MyEntry entry = new MyEntry(key, value);
entry.next = privious;
entries[index] = entry;
return null;
}
// 根据key取值
public String get(String key) {
// 要查找的链表的位置
int index = key.hashCode() % length;
// 在链表中查找key对应的值
for (MyEntry entry = entries[index]; entry != null; entry = entry.next) {
if (entry.key.equals(key)) {
return entry.getValue();
}
}
return null;
}
private final class MyEntry {
private String key;
private String value;
private MyEntry next;
public MyEntry() {
super();
}
public MyEntry(String key, String value) {
super();
this.key = key;
this.value = value;
}
public MyEntry(String key, String value, MyEntry next) {
super();
this.key = key;
this.value = value;
this.next = next;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public MyEntry getNext() {
return next;
}
public void setNext(MyEntry next) {
this.next = next;
}
}
}
package ds;
public class MyHashMap {
private static int length = 10;
private MyEntry[] entries;
private int index = 0;
public MyHashMap() {
super();
initinalize();
}
public void initinalize() {
entries = new MyEntry[length];
}
// 添加键值对
public String put(String key, String value) {
// 要添加到的链表的下表
int index = key.hashCode() % length;
// 链表当前存储的第一个元素
MyEntry privious = entries[index];
// 有相同的key就覆盖
for (MyEntry entry = entries[index]; entry != null; entry = entry.next) {
if (entry.getKey().equals(key)) {
// 替换value
String oldValue = entry.getValue();
entry.setValue(value);
return oldValue;
}
}
// 没有相同的key就添加,并且把这个键值对放在头部
MyEntry entry = new MyEntry(key, value);
entry.next = privious;
entries[index] = entry;
return null;
}
// 根据key取值
public String get(String key) {
// 要查找的链表的位置
int index = key.hashCode() % length;
// 在链表中查找key对应的值
for (MyEntry entry = entries[index]; entry != null; entry = entry.next) {
if (entry.key.equals(key)) {
return entry.getValue();
}
}
return null;
}
private final class MyEntry {
private String key;
private String value;
private MyEntry next;
public MyEntry() {
super();
}
public MyEntry(String key, String value) {
super();
this.key = key;
this.value = value;
}
public MyEntry(String key, String value, MyEntry next) {
super();
this.key = key;
this.value = value;
this.next = next;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getValue() {
return value;
}
public void setValue(String value) {
this.value = value;
}
public MyEntry getNext() {
return next;
}
public void setNext(MyEntry next) {
this.next = next;
}
}
}
相关文章推荐
- hashMap的实现原理-自定义简单的hashMap
- 利用自定义泛型,自己简单实现HashMap
- HashMap简单实现原理及遍历map的几种方式
- 哈希表原理及hashmap简单实现
- HashMap实现原理简单分析
- HashMap的实现原理简单分析
- 哈希表原理及hashmap简单实现
- java——HashMap的实现原理,自己实现简单的HashMap
- HashMap实现原理及自定义
- HashMap实现原理分析及简单实现一个HashMap
- 自定义下拉刷新简单原理实现
- HashMap的实现原理-博客总结
- MVC数据验证原理及自定义ModelValidatorProvider实现无编译修改验证规则和错误信息
- MyBatis接口的简单实现原理
- 自定义view简单实现
- ava中代理,静态代理,动态代理实现原理简单易懂
- 端口详解+端口扫描原理+简单端口扫描实现
- hash算法 (hashmap 实现原理)
- HashMap实现原理及源码分析
- Java中HashMap的实现原理