自定义实现Map

Map接口

实现Map接口的类用存储键(key)-值(value)对,通过键这个对象可以找到值这个对象。

Map接口的实现类有HashMap和TreeMap等

Map类中存储的键-值对通过键来标识,所以键值不能重复

Object put(Object key,Object value);
Object get(Object key);
Object remove(Object key);
boolean containKey(Object key);
boolean containsValue(Object value);
int size();
boolean isEmpty();
void putAll(Map t);
void clear();

示例:

package junit.matrix.map;
import java.util.HashMap;
import java.util.Map;
/**
 * 测试Map的基本用法
 * 
 * TestMap<BR>
 * 创建人:Matrix <BR>
 * 时间:2016年2月21日-下午1:19:32 <BR>
 * 
 * @version 1.0.0
 *
 */
public class TestMap {

    public static void main(String[] args) {
        Map map = new HashMap();
        map.put("Matrix", new NickName("SparseMatrix"));
        map.put("Tom", new NickName("dick"));

        // 通过键获取值
        NickName n = (NickName) map.get("Matrix");
        System.out.println(n.name);

        // map.remove("Tom");
        boolean flag = map.containsKey("Matrix");
        System.out.println(flag);
    }
}

class NickName {

    String name;

    public NickName(String name) {
        this.name = name;
    }
}

输出结果:

SparseMatrix
true

hashMap和HashTable的区别

自己实现HashMap

别名类:

package junit.matrix.testmap;

public class NickName {

    public String name;

    public NickName(String name) {
        this.name = name;
    }
}

自定义Map实现类:

package junit.matrix.testmap;

/**
 * 自定义实现Map的功能!
 * 
 * Map:存放键值对,根据键对象找对应的值对象
 * 
 * TMapDemo01<BR>
 * 创建人:Matrix <BR>
 * 时间:2016年2月21日-下午1:54:27 <BR>
 * 
 * @version 1.0.0
 *
 */
public class TMapDemo01 {

    // 新建数组
    TEntry[] arr = new TEntry[990];

    int size;

    public void put(Object key, Object value) {
        TEntry e = new TEntry(key, value);
        arr[size++] = e;
    }

    //
    public Object get(Object key) {
        for (int i = 0; i < size; i++) {
            if (arr[i].key.equals(key)) {
                return arr[i].value;
            }
        }
        return null;
    }

    public static void main(String[] args) {
        TMapDemo01 m = new TMapDemo01();
        m.put("Matrix", new NickName("何二狗"));
        m.put("Tom", new NickName("黄狗蛋"));
        m.put("Taro", new NickName("李鸭蛋"));
        m.put("Jonny", new NickName("咸鸭蛋"));

        NickName n = (NickName) m.get("Matrix");
        System.out.println(n.name);
    }
}

/**
 * 键值对
 * 
 * TEntry<BR>
 * 创建人:Matrix <BR>
 * 时间:2016年2月21日-下午1:56:29 <BR>
 * 
 * @version 1.0.0
 *
 */
class TEntry {

    // 键
    Object key;
    // 值
    Object value;

    public TEntry(Object key, Object value) {
        super();
        this.key = key;
        this.value = value;
    }

}

运行结果:

何二狗

你可能感兴趣的:(map)