专栏首页cwl_Java数据结构与算法-Map集合

数据结构与算法-Map集合

代码示例
package *;

/**
 * @program: data-structure
 * @description:
 * @author: ChenWenLong
 * @create: 2019-09-10 11:13
 **/
public class MyMap<T,K> {

    //键值对数组
    Entry[] array;
    int size;

    //内部键值对
    private class Entry<T,K>{
        T key;
        K value;
        public Entry(T key,K value){
            this.key = key;
            this.value = value;
        }
    }

    /**
     * 功能描述:
     * 〈创建默认大小的Map〉
     *
     * @params : []
     * @return :
     * @author : cwl
     * @date : 2019/9/10 11:14
     */
    public MyMap(){
        this(10);
    }

    /**
     * 功能描述:
     * 〈创建指定大小的Map〉
     *
     * @params : [size]
     * @return :
     * @author : cwl
     * @date : 2019/9/10 11:15
     */
    public MyMap(int size){
        this.size = size;
    }

    /**
     * 功能描述:
     * 〈判断Map是否为空〉
     *
     * @params : []
     * @return : boolean
     * @author : cwl
     * @date : 2019/9/10 11:16
     */
    public boolean isEmpty(){
        return size == 0;
    }

    /**
     * 功能描述:
     * 〈拓展键值对长度〉
     *
     * @params : [array]
     * @return : com.cwl.data.map.Entry[]
     * @author : cwl
     * @date : 2019/9/10 11:17
     */
    public Entry[] expandLength(Entry[] array){
        //按照1.5倍进行拓展
        Entry[] newArray = new Entry[array.length * 2 +1];
        for (int i=0;i<array.length;i++) {
            newArray[i] = array[i];
        }
        return newArray;
    }

    /**
     * 功能描述:
     * 〈添加一个键值对〉
     *
     * @params : [key, value]
     * @return : boolean
     * @author : cwl
     * @date : 2019/9/10 11:25
     */
    public boolean put(T key,K value){
        //如果长度已经满了,则对数组进行拓容
        if(size == array.length){
            array = expandLength(array);
        }
        for(int i=0;i<array.length;i++){
            //如果Key相等则,value值进行覆盖
            if(array[i].key.equals(key)){
                array[i].value = value;
                return true;
            }
        }
        //如果原本的Map集合为空,则新创建一个集合
        array[size] = new Entry(key, value);
        size ++;
        return true;
    }

    /**
     * 功能描述:
     * 〈根据Key值获得value〉
     *
     * @params : [key]
     * @return : java.lang.Object
     * @author : cwl
     * @date : 2019/9/10 11:27
     */
    public Object get(T key){
        if(size != 0){
            for(int i=0;i<size;i++){
                if(array[i].key.equals(key)){
                    return array[i].value;
                }
            }
        }
        return null;
    }

    /**
     * 功能描述:
     * 〈是否包含某个Key值〉
     *
     * @params : [key]
     * @return : boolean
     * @author : cwl
     * @date : 2019/9/10 11:30
     */
    public boolean containsKey(T key){
        for(int i=0;i<size;i++){
            if(array[i].key.equals(key)){
                return true;
            }
        }
        return false;
    }

    /**
     * 功能描述:
     * 〈判断是否包含某个Value值〉
     *
     * @params : [value]
     * @return : boolean
     * @author : cwl
     * @date : 2019/9/10 11:33
     */
    public boolean containsValue(K value){
        for(int i=0;i<size;i++){
            if(array[i].value.equals(value)){
                return true;
            }
        }
        return false;
    }

}

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 系统架构师论文-论软件产品线技术(设计院信息管理平台)

    本人作为某软件公司负责人之一,通过対位于几个省的国家甲级、乙级、丙级设计院的考查和了解,我决定采用软件产品线方式开发系列《设计院信息管理平台》产品。 该产品线...

    cwl_java
  • C++经典算法题-奇数魔方阵

    将1到n(为奇数)的数字排列在nxn的方阵上,且各行、各列与各对角线的和必须相同,如下所示:

    cwl_java
  • 数据结构与算法-反转排序

    cwl_java
  • CSDN如何自定义一个漂亮的模块

    TrueDei
  • Java HashMap 核心源码解读

    本篇对HashMap实现的源码进行简单的分析。 所使用的HashMap源码的版本信息如下:

    哲洛不闹
  • Mac 下在终端直接查看图片

    在开发的过程中,我们通常会遇到这样的情况,就是我们需要根据图片的url地址查看其对应的内容,通常的做法就是把这个图片链接贴到浏览器。不过一直好奇,能不能再终端中...

    技术小黑屋
  • Redis 命令执行过程(下)

    在上一篇文章中《Redis 命令执行过程(上)》中,我们首先了解 Redis 命令执行的整体流程,然后细致分析了从 Redis 启动到建立 socket 连接,...

    程序员历小冰
  • 不通过App Store实现ios应用分发下载安装

    最近公司的项目准备着手宣传工作了,宣传手册上要印制App的下载地址二维码,但是客户端应用还未上线,需要一种临时的方案解决应用分发下载问题,通常ios应用必须通过...

    业余草
  • 爬虫篇|开多线程,咱们一起来斗图(九)

    曾经我看过一篇文章,对于爬虫有这么一个比喻,爬虫就是去果园摘水果,但是一个人多摘不了这么多,这不叫上了隔壁老王,咱们一块去,其实就是就是一个线程,人太多了,不如...

    润森
  • 第五讲 通过植物大战僵尸案例来谈谈CSS布局和定位

    相对定位就是移动一个标签,根据什么来移动呢?对了,就是根据它原来的位置移动,就这么简单。比如,我现在要移动这块场地,就这样做:

    剽悍一小兔

扫码关注云+社区

领取腾讯云代金券