atwood-pan

 

理解Map-构建关联数组

理解Map

要更深入理解map,学习如何构建关联数组是很有帮助的,以下是简单实现

package org.example.onjava.senior.example03collection.map;

import java.util.Objects;

/**
 * @Author Coder_Pans
 * @Date 2022/11/21 14:34
 * @PackageName:org.example.onjava.senior.example03collection.map
 * @ClassName: AssocaiativeArray
 * @Description: TODO 实现关联数组
 * @Version 1.0
 */
public class AssocaiativeArray<K, V> {
    private Object[][] pairs;
    private int index;

    public AssocaiativeArray(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};
    }

    @SuppressWarnings("unchecked")
    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; // Did not find key
    }

    @Override
    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("\n");
        }
        return result.toString();
    }

    public static void main(String[] args) {
        AssocaiativeArray<String, String> map =
                new AssocaiativeArray<>(6);
        map.put("sky", "blue");
        map.put("grass", "green");
        map.put("ocean", "dancing");
        map.put("tree", "tall");
        map.put("earth", "brown");
        map.put("sun", "warm");
        try {
            map.put("extra", "object"); // Past the end
        } catch (ArrayIndexOutOfBoundsException e) {
            System.out.println("Too many objects!");
        }
        System.out.println(map);
        System.out.println(map.get("ocean"));
    }
}

关联数组中的基本方法是put和get,但是为了便于显示,我们重写了toString来打印键值对,为了演示其可以工作,我们子啊main中创建了一个由String对组成的AssociativeArray,并打印了生成的映射,之后通过get获取了其中的一个值。

posted on 2022-11-21 15:07  JavaCoderPan  阅读(26)  评论(0编辑  收藏  举报

导航