/*
 * @author Ranides Atterwim {@literal <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;

/**
 * This map stores elements in well defined order and is able to return values as List
 *
 * Returned list must guarantee constant time at index, and implement java.util.RandomAccess
 *
 * Returned list supports remove operation.
 *
 * @param <K> K
 * @param <V> V
 * @author Ranides Atterwim {@literal <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();

}
