简单Map实现

package com.java.test.test;


public class TestMap<K,V> {
    private Object[][] pairs;
    private int index;
    public TestMap(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};
    }
    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;
    }
    @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) {
        TestMap<String,String> testMap = new TestMap<>(3);
        testMap.put("sky","blue");
        testMap.put("grass","green");
        testMap.put("sun","warm");
        try {
            testMap.put("ex","object");
        } catch (Exception e) {
            System.out.println("Too many objects");
        }
        System.out.println(testMap);
        System.out.println(testMap.get("sky"));
    }
}

/*Output:
Too many objects
sky : blue
grass : green
sun : warm
blue
*/

关联数组中的基本方法是put()和get(),但是为了容易显示,toString()方法被覆盖为可以打印键-值对。为了展示它可以工作,main()用字符串对加载了一个TestMap,并打印了所产生的映射表,随后是获取一个值的get()。
为了使用get()方法,你需要传递想要查找的key,然后它会将与之相关联的值作为结果返回,或者在找不到的情况下返回null。get()方法使用的是可能是能想到的效率最差的方式来定位值:从数组的头部开始,使用equals()方法依次比较键。但是这简单。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值