利用自定义泛型,自己简单实现HashMap
Posted ihrthk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了利用自定义泛型,自己简单实现HashMap相关的知识,希望对你有一定的参考价值。
泛型是Java SE 1.5的新特性,泛型的本质是参数化类型,也就是说所操作的数据类型被指定为一个参数。这种参数类型可以用在类、接口和方法的创建中,分别称为泛型类、泛型接口、泛型方法。(来自百度百科)
实现步骤
1.首先HashMap表面保存的是Key和Value,但是实际上保存的是一个个的Entry,而Entry里面是Key和Value
public class MyEntry<K, V>
private K key;
private V value;
public K getKey()
return key;
public void setKey(K key)
this.key = key;
public V getValue()
return value;
public void setValue(V value)
this.value = value;
2.利用泛型写自己的HashMap,继承HashSet,里有有一个entrys用来保存名-值对的集合。
public class MyHashMap<K, V> extends HashSet
private Set<MyEntry<K, V>> entrys = new HashSet<MyEntry<K, V>>();
3.实现HashMap的put(K key, V value)和V get(K key)方法
public void put(K key, V value)
MyEntry<K, V> myEntry = new MyEntry<K, V>();
myEntry.setKey(key);
myEntry.setValue(value);
entrys.add(myEntry);
public V get(K key)
V value = null;
for (Iterator<MyEntry<K, V>> i = entrys.iterator(); i.hasNext();)
MyEntry<K, V> entry = i.next();
if (key.equals(entry.getKey()))
value = entry.getValue();
break;
return value;
4.实现Set<MyEntry<K, V>> entrySet(),Set<K> keySet(),String toString()三个迭代方法
public Set<MyEntry<K, V>> entrySet()
return entrys;
public Set<K> keySet()
Set<K> set = new HashSet<K>();
for (Iterator<MyEntry<K, V>> i = entrys.iterator(); i.hasNext();)
MyEntry<K, V> myEntry = i.next();
set.add(myEntry.getKey());
return set;
@Override
public String toString()
StringBuffer sb = new StringBuffer("[");
for (Iterator<MyEntry<K, V>> i = entrys.iterator(); i.hasNext();)
MyEntry<K, V> myEntry = i.next();
sb.append(myEntry.getKey());
sb.append("=");
sb.append(myEntry.getValue());
sb.append(",");
sb.deleteCharAt(sb.length() - 1);
sb.append("]");
return sb.toString();
5.测试。
public class Test
/**
* @param args
*/
public static void main(String[] args)
// TODO Auto-generated method stub
MyHashMap<String, String> map = new MyHashMap<String, String>();
map.put("hello1", "world1");
map.put("hello2", "world2");
System.out.println(map);
Set<String> set = map.keySet();
for (String string : set)
System.out.println(string);
有图有真相,总结:HashMap就是自定义索引的Set
以上是关于利用自定义泛型,自己简单实现HashMap的主要内容,如果未能解决你的问题,请参考以下文章