java中使用数组和链表简单实现SJBMap
import java.util.LinkedList;
public class SJBMap {
private Object[] elementData;
private int size;
public SJBMap(){
this(999);
}
private SJBMap(int initalCapital){
Object[] array = new Object[initalCapital];
elementData = array;
}
public void add(Object key,Object value){
int hashCode = key.hashCode();
int min = hashCode % elementData.length;
Entry en = new Entry(key,value);
if(elementData[min] == null){
LinkedList list = new LinkedList();
list.add(en);
elementData[min] = list;
}else{
LinkedList list = (LinkedList) elementData[min];
list.add(en);
}
size++;
}
private Entry getkeys(Object key){
int min = key.hashCode() % elementData.length;
Entry en = null;
if(elementData[min] != null){
LinkedList list = (LinkedList) elementData[min];
for(int i=0;i<list.size();i++){
Entry entry = (Entry) list.get(i);
if(entry.key.equals(key)){
en = entry;
break;
}
}
}
return en;
}
public Object getKeys(Object key){
return getkeys(key).value;
}
class Entry{
private Object key;
private Object value;
public Entry(){
}
public Entry(Object key,Object value){
this.key = key;
this.value = value;
}
public Object getKey() {
return key;
}
public void setKey(Object key) {
this.key = key;
}
public Object getValue() {
return value;
}
public void setValue(Object value) {
this.value = value;
}
}
}