/*
 * @author Ranides Atterwim <ranides@gmail.com>
 * @copyright Ranides Atterwim
 * @license WTFPL
 * @url http://ranides.net/projects/assira
 */
package net.ranides.assira.collection.maps;

import java.util.List;
import java.util.Map;
import net.ranides.assira.collection.sets.OrderedSet;

/**
 * Interfejs mapy, która dodatkowe udostępnia widoki na dane, w postaci 
 * uporządkowanych list wartości, kluczy lub par. Modyfikacja widoków zmienia 
 * zawartość mapy. Wstawianie i usuwanie przypisań za pomocą dowolnych metod 
 * (m.in. metod z widoków) przeindeksowuje całą zawartość w spójny sposób.
 * 
 * @param <K> 
 * @param <V> 
 * @author Ranides Atterwim <ranides@gmail.com>
 */
public interface OrderedMap<K,V> extends Map<K,V> {

    @Override
    List<V> values();

    @Override
    OrderedSet<Entry<K, V>> entrySet();

    @Override
    OrderedSet<K> keySet();

}
