HashMap не сохраняет дубликаты ключей!
Вы можете расширить класс HashMap (JAVA> = 8):
public class MyHashMap2 extends HashMap<String, Integer>{
@Override
public Integer put(String key, Integer value) {
return merge(key, value, (v, n) -> v + n);
}
public static void main (String[] args) throws java.lang.Exception
{
MyHashMap2 list3=new MyHashMap2();
list3.put("TV", 10);
list3.put("TV", 20);
System.out.println(list3);
}
}
Или Вы можете объединить HashMap
и заменить метод put, чтобы добавить к предыдущему значению новое значение.
HashMap<String, Integer> list = new HashMap<>();
list.put("TV", 10);
list.put("TV", 20);
System.out.println(list);
MyHashMap list2 = new MyHashMap();
list2.put("TV", 10);
list2.put("TV", 20);
System.out.println(list2);
//OUTPUT:
//{TV=20}
//MyHashMap [List={TV=30}]
public class MyHashMap implements Map<String, Integer>{
HashMap<String, Integer> list = new HashMap<>();
public MyHashMap() {
super();
}
@Override
public int size() {
return list.size();
}
@Override
public boolean isEmpty() {
return list.isEmpty();
}
@Override
public boolean containsKey(Object key) {
return list.containsKey(key);
}
@Override
public boolean containsValue(Object value) {
return list.containsValue( value);
}
@Override
public Integer get(Object key) {
return list.get(key);
}
@Override
public Integer put(String key, Integer value) {
if(list.containsKey(key))
list.put(key, list.get(key)+value);
else
list.put(key, value);
return value;
}
@Override
public Integer remove(Object key) {
return list.remove(key);
}
@Override
public void putAll(Map<? extends String, ? extends Integer> m) {
list.putAll(m);
}
@Override
public void clear() {
list.clear();
}
@Override
public Set<String> keySet() {
return list.keySet();
}
@Override
public Collection<Integer> values() {
return list.values();
}
@Override
public Set<java.util.Map.Entry<String, Integer>> entrySet() {
return list.entrySet();
}
@Override
public String toString() {
return "MyHashMap [list=" + list + "]";
}
}
Вы можете попробовать код здесь: https://ideone.com/Wl4Arb