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

wf.utils.java.data.map.ArrayMap Maven / Gradle / Ivy

There is a newer version: 3.3.4
Show newest version
package wf.utils.java.data.map;



import wf.utils.java.data.set.ArraySet;

import java.util.*;
import java.util.stream.Collectors;


public class ArrayMap implements Map {
    private final List> entries;



    public ArrayMap() {
        this.entries = new ArrayList<>();
    }


    public ArrayMap(int size) {
        this.entries = new ArrayList<>(size);
    }


    @Override
    public V get(Object key) {
        for (Map.Entry entry : entries) {
            if (entry.getKey().equals(key)) {
                return entry.getValue();
            }
        }
        return null;
    }

    @Override
    public V put(K key, V value) {
        for (Map.Entry entry : entries) {
            if (entry.getKey().equals(key)) {
                V oldValue = entry.getValue();
                entry.setValue(value);
                return oldValue;
            }
        }
        entries.add(new Entry<>(key, value));
        return null;
    }

    @Override
    public V remove(Object key) {
        for (int i = 0; i < entries.size(); i++) {
            Map.Entry entry = entries.get(i);
            if (entry.getKey().equals(key)) {
                entries.remove(i);
                return entry.getValue();
            }
        }
        return null;
    }

    @Override
    @SuppressWarnings("unchecked")
    public void putAll(Map m) {
        entries.addAll((Collection>) (Object) m.entrySet());
    }

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


    @Override
    public Set keySet() {
        return new ArraySet<>(entries.stream().map(Map.Entry::getKey).collect(Collectors.toList()));
    }


    @Override
    public Collection values() {
        return entries.stream().map(Map.Entry::getValue).collect(Collectors.toList());
    }


    @Override
    public Set> entrySet() {
        return new ArraySet<>(entries);
    }

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

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

    @Override
    public boolean containsKey(Object key) {
        for (Map.Entry entry : entries)
            if (entry.getKey().equals(key))
                return true;

        return false;
    }

    @Override
    public boolean containsValue(Object value) {
        for (Map.Entry entry : entries)
            if (entry.getValue().equals(value))
                return true;

        return false;
    }


    public static class Entry implements Map.Entry {
        private final K key;
        private V value;

        public Entry(K key, V value) {
            this.key = key;
            this.value = value;
        }

        @Override
        public K getKey() {
            return key;
        }

        @Override
        public V getValue() {
            return value;
        }

        @Override
        public V setValue(V value) {
            V oldValue = this.value;
            this.value = value;
            return oldValue;
        }
    }
}




© 2015 - 2025 Weber Informatics LLC | Privacy Policy