GenericsによるMapの実装

2151 ワード

ギネス世界記録を勉強している間に
楽しみとして、Mapを実現しました.
下手なハーモニーですが、面白いです.
public class GenericsEx {
    public static void main(String[] args) {

        Map<Integer,String> map = new HashMap<>();

        map.put(1, "A");
        map.put(2, "B");
        map.put(3, "C");

        System.out.println(map.toString()); //{1=A, 2=B, 3=C}

        MyMap<Integer, String> myMap = new MyMap<>();

        myMap.put(1, "A");
        myMap.put(2, "B");
        myMap.put(3, "C");

        System.out.println(myMap.toString()); //{1=A, 2=B, 3=C}
    }
}

class MyMap<K, V>{
    ArrayList<K> keyArray = new ArrayList<>();
    ArrayList<V> valueArray = new ArrayList<>();

    public void put(K key, V value){
        keyArray.add(key);
        valueArray.add(value);
    }

    public V get(K key){
        int index = keyArray.indexOf(key);
        return valueArray.get(index);
    }

    @Override
    public String toString() {
        String str = "{";

        for(int i=0 ; i < keyArray.size(); i++){
            str += keyArray.get(i) + "=" + valueArray.get(i);
            if (i < keyArray.size() -1 ){
                str += ", ";
            }
        }

        str += "}";

        return str;
    }
}