Java 自定义map

本文介绍了作者为满足工作需求,使用Java基础实现了一个简单的MyHashMap类,展示了如何插入、获取和检查键值对,以及在main方法中演示了其实例应用。

java 基础篇 一  (自定义map) 


      鉴于以工作快四年,整理一下这些年使用的jdk 常用的类,首先看应用较多的map,jdk 的map 有很多实现类,鉴于时间有限,先实现一个简单Map,话不多说,代码如下:

package com.pingan.pastry.basic.MyInterface.impl;

import com.pingan.pastry.basic.MyInterface.MyMap;

public class MyHashMap<K, V> implements MyMap<K, V> {

    private Object[][] objects;
    private int index;

    public MyHashMap(int length) {
        objects = new Object[length][2];
    }

    @Override
    public void put(K key, V value) throws Exception {
        if (index > objects.length) {
            throw new Exception("长度越界");
        }
        //key 存在
        for (int i = 0; i < objects.length; i++) {
            Object[] object = objects[i];
            if (object != null && object[0] != null) {
                if (object[0].equals(key)) {
                    objects[i][0] = key;
                    objects[i][1] = value;
                }
            }

        }
        objects[index++] = new Object[]{key, value};

    }

    @Override
    public V get(K key) {
        for (int i = 0; i < objects.length; i++) {
            Object[] object = objects[i];
            if (object[0].equals(key)) {
                return (V) objects[i][1];
            }
        }
        return null;
    }

    @Override
    public boolean containsKey(K key) {
        for (int i = 0; i < objects.length; i++) {
            Object[] object = objects[i];
            if (object[0].equals(key)) {
                return true;
            }
        }
        return false;
    }

    public static void main(String[] args) throws Exception {
        MyMap map = new MyHashMap<>(10);
        map.put("name", "张三");
        map.put("age", 1);
        map.put("sex", "男");

        System.out.println("name: " + map.get("name"));
        System.out.println("age: " + map.get("age"));
        System.out.println("sex: " + map.get("sex"));
    }
如下是输出结果:
name: 张三
age: 1
sex: 男

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值