62,626
社区成员
发帖
与我相关
我的任务
分享package Map;
import java.util.*;
public class SimpleHashMap<K, V> extends AbstractMap<K, V>{
static final int SIZE=997;
LinkedList<MapEntry<K,V>>[] buckets=new LinkedList[SIZE];
public V put(K key, V value){
V oldValue=null;
boolean found=false;
int index=Math.abs(key.hashCode())%SIZE;
if(buckets[index]==null){
buckets[index]=new LinkedList<MapEntry<K, V>>();
}
LinkedList<MapEntry<K, V>> bucket=buckets[index];
MapEntry<K, V> pair=new MapEntry<K,V>(key,value);
ListIterator<MapEntry<K, V>> it=(ListIterator<MapEntry<K, V>>) bucket.listIterator();
while(it.hasNext()){
MapEntry<K, V> ipairs=it.next();
if(ipairs.getKey().equals(key)){
oldValue=ipairs.getValue();
found=true;
it.set(pair);
break;
}
}
if(!found){
//System.out.println(index);
buckets[index].add(pair);
}
return oldValue;
}
@Override
public Set<Map.Entry<K, V>> entrySet() {
Set<Map.Entry<K,V>> set=new HashSet<Map.Entry<K,V>>();
for(LinkedList<MapEntry<K, V>> bucket:buckets){
if(bucket==null){continue;}
for(MapEntry<K,V> mpair:bucket){
set.add(mpair);
}
}
return set;
}
public static void main(String[] args){
SimpleHashMap<String, String> s=new SimpleHashMap<String, String>();
s.put("hi", "jinglong");
s.put("hi56", "mmmmyn");
System.out.println(s);
}
}
package Map;
import java.util.*;
public class MapEntry<K,V> implements Map.Entry<K,V>{
private K key;
private V value;
public MapEntry(K key,V value){
this.key=key;
this.value=value;
}
@Override
public K getKey() {
return key;
}
@Override
public V getValue() {
// TODO Auto-generated method stub
return value;
}
@Override
public V setValue(V v) {
V result =value;
value=v;
return result;
}
public int hashCode(){
System.out.println("hashcode");
return (key==null?0:key.hashCode())^(value==null?0:value.hashCode());
}
public boolean equals(Object o){
System.out.println("equals");
return true;
}
public String toString(){
return "sb";
}
public static void main(String[] args){
MapEntry m1=new MapEntry<Integer, Integer>(1, 1);
MapEntry m2=new MapEntry<Integer, Integer>(2, 1);
System.out.println(m1.equals(m2));
}
}
@Override
public String toString() {
String str = "";
str += number + "\t";
str += name + "\t";
str += price;
return str;