下面是Java手動實現HashMap(底層實現)的例子:
新建兩個class,第一個是SxtHashSet類,第二個是Node2類:
下面是SxtHashSet類的代碼:
import java.util.HashMap;
/**
* 手動實現一個HashSet,更深刻理解HashSet底層原理
* @author Administrator
*
*/
public class SxtHashSet {
HashMap map;
private static final Object PRESENT=new Object();
public SxtHashSet() {
map=new HashMap();
}
@Override
public String toString() {
StringBuilder sb=new StringBuilder();
sb.append("[");
for(Object key:map.keySet()) {
sb.append(key+",");
}
sb.setCharAt(sb.length()-1, ']');
return sb.toString();
}
public int size() {
return map.size();
}
public void add(Object o) {
map.put(o, PRESENT);//看這!!!(使用HashMap中的方法來實現HashMap的add方法)
}
public static void main(String[] args) {
SxtHashSet set=new SxtHashSet();
set.add("aaa");
set.add("bbb");
set.add("ccc");
System.out.println(set);//[aaa,ccc,bbb]
}
}
下面是Node2的代碼:
/**
* 用於HashSet類
* @author Administrator
*
*/
public class Node2 <K,V>{
int hash;
K key;
V value;
Node2 next;
}