SlowMap.java Source code

Java tutorial

Introduction

Here is the source code for SlowMap.java

Source

// : c11:SlowMap.java
// A Map implemented with ArrayLists.
// From 'Thinking in Java, 3rd ed.' (c) Bruce Eckel 2002
// www.BruceEckel.com. See copyright notice in CopyRight.txt.

import java.util.AbstractMap;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
import java.util.Set;

public class SlowMap extends AbstractMap {

    private List keys = new ArrayList(), values = new ArrayList();

    public Object put(Object key, Object value) {
        Object result = get(key);
        if (!keys.contains(key)) {
            keys.add(key);
            values.add(value);
        } else
            values.set(keys.indexOf(key), value);
        return result;
    }

    public Object get(Object key) {
        if (!keys.contains(key))
            return null;
        return values.get(keys.indexOf(key));
    }

    public Set entrySet() {
        Set entries = new HashSet();
        Iterator ki = keys.iterator(), vi = values.iterator();
        while (ki.hasNext())
            entries.add(new MPair(ki.next(), vi.next()));
        return entries;
    }

    public String toString() {
        StringBuffer s = new StringBuffer("{");
        Iterator ki = keys.iterator(), vi = values.iterator();
        while (ki.hasNext()) {
            s.append(ki.next() + "=" + vi.next());
            if (ki.hasNext())
                s.append(", ");
        }
        s.append("}");
        return s.toString();
    }

    public static void main(String[] args) {
        SlowMap m = new SlowMap();
        m.put("Adobe", "Mountain View, CA");
        m.put("IBM", "White Plains, NY");
        m.put("Learning Tree", "Los Angeles, CA");
        m.put("Microsoft", "Redmond, WA");
        m.put("Netscape", "Mountain View, CA");
        m.put("O'Reilly", "Sebastopol, CA");
        m.put("Sun", "Mountain View, CA");
        System.out.println(m);

    }
} ///:~

class MPair implements Entry, Comparable {
    Object key, value;

    MPair(Object k, Object v) {
        key = k;
        value = v;
    }

    public Object getKey() {
        return key;
    }

    public Object getValue() {
        return value;
    }

    public Object setValue(Object v) {
        Object result = value;
        value = v;
        return result;
    }

    public boolean equals(Object o) {
        return key.equals(((MPair) o).key);
    }

    public int compareTo(Object rv) {
        return ((Comparable) key).compareTo(((MPair) rv).key);
    }
} ///:~