All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jhotdraw8.icollection.sequenced.ReversedSequencedMapView Maven / Gradle / Ivy

The newest version!
package org.jhotdraw8.icollection.sequenced;

import org.jspecify.annotations.Nullable;

import java.util.AbstractMap;
import java.util.Collection;
import java.util.SequencedCollection;
import java.util.SequencedMap;
import java.util.SequencedSet;
import java.util.Set;

/**
 * Provides a reversed view on a {@link SequencedMap}.
 *
 * @param  the key type
 * @param  the value type
 */
public class ReversedSequencedMapView extends AbstractMap implements SequencedMap {
    private final SequencedMap src;

    /**
     * Constructs a new instance.
     *
     * @param src the source map
     */
    public ReversedSequencedMapView(SequencedMap src) {
        this.src = src;
    }

    @Override
    public boolean equals(Object o) {
        return src.equals(o);
    }

    @Override
    public int hashCode() {
        return src.hashCode();
    }

    @Override
    public int size() {
        return src.size();
    }

    @Override
    public boolean isEmpty() {
        return src.isEmpty();
    }

    @Override
    public boolean containsValue(Object value) {
        return src.containsValue(value);
    }

    @Override
    public boolean containsKey(Object key) {
        return src.containsKey(key);
    }

    @Override
    public V get(Object key) {
        return src.get(key);
    }

    @Override
    public V remove(Object key) {
        return src.remove(key);
    }

    @Override
    public Set> entrySet() {
        return src.sequencedEntrySet().reversed();
    }

    @Override
    public @Nullable V put(K key, V value) {
        if (src.containsKey(key)) {
            return src.put(key, value);
        } else {
            src.putFirst(key, value);
            return null;
        }
    }

    @Override
    public boolean remove(Object key, Object value) {
        return src.remove(key, value);
    }


    @Override
    public void clear() {
        src.clear();
    }

    @Override
    public Set keySet() {
        return src.sequencedKeySet().reversed();
    }

    @Override
    public Collection values() {
        return src.sequencedValues().reversed();
    }

    @Override
    public SequencedMap reversed() {
        return src;
    }

    @Override
    public SequencedSet sequencedKeySet() {
        return src.sequencedKeySet().reversed();
    }

    @Override
    public SequencedCollection sequencedValues() {
        return src.sequencedValues().reversed();
    }

    @Override
    public SequencedSet> sequencedEntrySet() {
        return src.sequencedEntrySet().reversed();
    }

    @Nullable
    @Override
    public Entry firstEntry() {
        return src.lastEntry();
    }

    @Nullable
    @Override
    public Entry lastEntry() {
        return src.firstEntry();
    }

    @Override
    public @Nullable Entry pollFirstEntry() {
        return src.pollLastEntry();
    }

    @Override
    public @Nullable Entry pollLastEntry() {
        return src.pollFirstEntry();
    }

    @Override
    public @Nullable V putFirst(K k, V v) {
        return src.putLast(k, v);
    }

    @Override
    public @Nullable V putLast(K k, V v) {
        return src.putFirst(k, v);
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy