Не принимает put (с остальными все правильно, вроде бы). Не пойму, может условие неправильно понял...
package com.javarush.task.task36.task3610;
import java.io.Serializable;
import java.util.*;
public class MyMultiMap<K, V> extends HashMap<K, V> implements Cloneable, Serializable {
static final long serialVersionUID = 123456789L;
private HashMap<K, List<V>> map;
private int repeatCount;
public MyMultiMap(int repeatCount) {
this.repeatCount = repeatCount;
map = new HashMap<>();
}
@Override
public int size() {
int size = 0;
for(List <V> list : map.values()){
size += list.size();
}
return size;//напишите тут ваш код
}
@Override
public V put(K key, V value) {
List <V> list;
V lastAddedValue = null;
if(!map.containsKey(key)){
list = new ArrayList<V>();
list.add(value);
map.put(key,list);
} else {
list = map.remove(key);
if(list.size()<repeatCount){
list.add(value);
map.put(key,list);
} else if(list.size()==repeatCount){
lastAddedValue = list.get(list.size()-1);
list.remove(0);
list.add(value);
map.put(key,list);
}
}
return lastAddedValue;//напишите тут ваш код
}
@Override
public V remove(Object key) {
List <V> list;
V removedValue = null;
if(!map.containsKey(key)){
return null;
}
list = map.get(key);
if(list.size()>0){
removedValue = list.remove(0);
}
if(list.size()==0){
map.remove(key, list);
}
return removedValue;//напишите тут ваш код
}
@Override
public Set<K> keySet() {
return map.keySet();//напишите тут ваш код
}
@Override
public Collection<V> values() {
List<V> list = new ArrayList<V>();
for(Map.Entry<K, List<V>> entry : map.entrySet()){
list.addAll(entry.getValue());
}
return list;//напишите тут ваш код
}
@Override
public boolean containsKey(Object key) {
return map.containsKey(key);//напишите тут ваш код
}
@Override
public boolean containsValue(Object value) {
for(Map.Entry<K, List<V>> entry : map.entrySet()){
if(((ArrayList<V>)entry.getValue()).contains(value)) return true;
}
return false;//напишите тут ваш код
}
@Override
public String toString() {
StringBuilder sb = new StringBuilder("{");
for (Map.Entry<K, List<V>> entry : map.entrySet()) {
sb.append(entry.getKey());
sb.append("=");
for (V v : entry.getValue()) {
sb.append(v);
sb.append(", ");
}
}
String substring = sb.substring(0, sb.length() - 2);
return substring + "}";
}
}