고유 한 맵을 구현했습니다. 이것은 양방향이며, 키가 유일 할뿐만 아니라 값도있는 해시 맵입니다.지도 구현을위한 맞춤 반복기를 만드는 방법은 무엇입니까?
public class SimpleUniqueMap<K,V> implements UniqueMap<K,V>, Iterable<K>{
public HashMap<K,V> uniqueMap = new HashMap<K,V>();
class EnumSimpleUniqueMap implements Iterator<K>{
int count = uniqueMap.size();
public boolean hasNext(){
return count > 0;
}
public K next(){
if(count == 0){
throw new NoSuchElementException();
}else{
count--;
//...
}
}
public void remove(){
throw new UnsupportedOperationException();
}
}
public Iterator<V> iterator(){
return new EnumSimpleUniqueMap();
}
public V uniquePut(K key, V value){
return null;
}
public UniqueMap<V,K> inverse(){
return null;
}
}
당신은 이미 내 고유의 맵에 대한 반복자를 구현하기 위해 노력 볼 수 있듯이 :
public interface UniqueMap<K,V>{
V uniquePut(K key, V value);
UniqueMap<V,K> inverse();
}
이 가능한 구현입니다. 그러나 해시 맵에서 값은 위치에 의해 액세스되지 않고 키에 의해 액세스됩니다. 그래서 대개 카운터와 액세스 값을 취할 것이지만이 경우에는 가능하지 않습니다.
실제로 키를 반복하여 검색하면 충분합니다. 어떻게해야합니까? 키와 값을 모두 포함하는 일종의 항목 객체를 검색하는 방법이 있습니까?
지도 개체에서 반복기를 검색 할 수 있다는 것을 알고 있지만 이것은 나를위한 옵션이 아닙니다.