Map接口
package com.ninemax.ak.jdk.source;
import java.util.Collection;
import java.util.Map;
import java.util.Set;
public interface MapJDK<K, V> {
int size();
boolean isEmpty();
boolean containsKey(Object key);
boolean containsValue(Object value);
V get(Object key);
V put(K key, V value);
V remove(Object key);
void putAll(Map<? extends K, ? extends V> m);
void clear();
Set<K> keySet();
Collection<V> values();
Set<Map.Entry<K, V>> entrySet();
interface Entry<K, V> {
K getKey();
V getValue();
V setValue(V value);
boolean equals(Object o);
int hashCode();
}
boolean equals(Object o);
int hashCode();
}
Map重写实现类
package com.ninemax.ak.jdk;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
import com.ninemax.ak.jdk.source.MapJDK;
public class MapJDKImpl<K, V> implements MapJDK<K, V> {
Map<K, V> map = new HashMap<K, V>();
@Override
public int size() {
return map.size();
}
@Override
public boolean isEmpty() {
if (map.size() == 0) {
return true;
}
return false;
}
@Override
public boolean containsKey(Object key) {
for (Object s : map.keySet()) {
if (s.equals(key)) {
return true;
}
}
return false;
}
@Override
public boolean containsValue(Object value) {
Collection<V> v = map.values();
if (v.contains(value)) {
return true;
}
return false;
}
@Override
public V get(Object key) {
return map.get(key);
}
@Override
public V put(K key, V value) {
return map.put(key, value);
}
@Override
public V remove(Object key) {
return map.remove(key);
}
@Override
public void putAll(Map<? extends K, ? extends V> m) {
Map<Object, Map<? extends K, ? extends V>> map = new HashMap<Object, Map<? extends K, ? extends V>>();
map.put("?", m);
}
@Override
public void clear() {
map.clear();
}
@Override
public Set<K> keySet() {
return (Set<K>) map.keySet();
}
@Override
public Collection<V> values() {
Set<K> set = map.keySet();
ArrayList<V> list = new ArrayList<V>();
for (Object key : set) {
list.add(map.get(key));
}
return list;
}
@Override
public Set<java.util.Map.Entry<K, V>> entrySet() {
return null;
}
}