用jdk本身的map是实现不了这种情况: 有重复key 但是不需要新的映射值value覆盖先前的value。
public interface Map<K,V>将键映射到值的对象。一个映射不能包含重复的键;每个键最多只能映射一个值。
自然继承一下HashMap,改写它的一个方法就ok了
Java代码
import java.util.*;
class MyHashMap extends HashMap
{
@Override
public Object put(Object key, Object value)
{
//如果已经存在key,不覆盖原有key对应的value
if(!this.containsKey(key))
return super.put(key, value);
return null;
}
}
public class TestOne
{
public void printMap()
{
Map map = new MyHashMap();
map.put("1", "1");
map.put("2", "2");
map.put("3", "3");
map.put("1", "4");
Iterator it = map.keySet().iterator();
while (it.hasNext())
{
Object key = it.next();
System.out.println("key = " + key + " ; value = " + map.get(key));
}
}
public static void main(String[] args)
{
new TestOne().printMap();
}
}
本文介绍了一种自定义的HashMap实现——MyHashMap,该实现允许键值对中的键重复但不会被新值覆盖。通过覆写put方法,实现了在键已存在时不进行替换的功能,并提供了测试示例。
490

被折叠的 条评论
为什么被折叠?



