hashmap的简易实现,基本实现PUT GET

/*简易版的HASHMAP包括基本的GET  PUT思想

 * 从数组头部开始线性通过key比较效率低;具有固定尺寸不灵活

*/

 

 

 

这个版本get取值按照线性思维逐个遍历数组元素比较  比较耗时,而且初始化容器具有固定尺寸也不够灵活

 

public class AssociativeArray<K, V> {
    private Object[][] pairs;
    private int index;

    public AssociativeArray(int length) {
        pairs = new Object[length][2];//具有固定的尺寸显得不够灵活
    }

    public void put(K key, V value) {
        if (index >= pairs.length) {
            throw new ArrayIndexOutOfBoundsException();
        }
        pairs[index++] = new Object[]{key, value};// 这里按索引体现0,1;索引0放健,1放值
    }

    public V get(K key) {
        for (int i = 0; i < index; i++) {
            if (key.equals(pairs[i][0])) {
                return (V) pairs[i][1];
            }
        }
        return null;//
    }


    public static void main(String[] args) {
        AssociativeArray<String, String> map = new AssociativeArray<>(6);
        map.put("sky", "blue");
        map.put("grass", "green");
        map.put("tree", "tall");
        try {
            map.put("extra", "object");
        } catch (ArrayIndexOutOfBoundsException e) {

        }
        System.out.println(map);
        System.out.println(map.get("sky"));
        
       
    }

    public String toString() {
        StringBuilder result = new StringBuilder();
        for (int i = 0; i < index; i++) {
            result.append(pairs[i][0].toString());
            result.append(" :");
            result.append(pairs[i][1].toString());
            if (i < index - 1) {
                result.append("
" + "==>" + index);
            }
        }
        return result.toString();
    }
原文地址:https://www.cnblogs.com/zhangfengshi/p/9947914.html