简单的map实现
简单过程:

  • 二维数组pairs
  • index
  • 构造器(设置最大长度)
  • put方法
  • get方法
  • toString方法
  • main()

代码实现:

package com.example.practicedemo;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][0] = key;pairs[index][1] = value;index++;//原书采用//pairs[index++] = new Object[]{key,value};}@SuppressWarnings("unchecked")public V get(K key) {for(int i=0;i<pairs.length;i++) {if(pairs[i][0] == key) {return (V) pairs[i][1];}}return null;}//个人实现public String toString() {String str = "";for(int i=0;i<pairs.length;i++) {str +="[" ;str +=pairs[i][0]+","+pairs[i][1];str +="]" ;}return str;}/*原书采用* 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) {AssociativeArray<String, Integer> associativeArray = new AssociativeArray(2);associativeArray.put("apple", 3);associativeArray.put("banana", 2);try {associativeArray.put("potato", 1);} catch (Exception e) {System.out.println(e);}System.out.println(associativeArray.get("banana"));System.out.println(associativeArray.get("AA"));System.out.println(associativeArray.toString());}}

比较:
使用StringBuild
二维数组整体赋值

Thinking in Java 17.8 理解Map相关推荐

  1. 【Java】如何理解Java中的双列集合Map?

    1 Map<K,V>接口 1.1 特点 双列集合一个元素包含俩值 Key不可以重复,Value可以重复 Key和Value一一对应 Key和Value可以时任意类型 1.2 常用方法 pu ...

  2. 4.6 W 字总结!Java 11—Java 17特性详解

    作者 | 民工哥技术之路 来源 | https://mp.weixin.qq.com/s/SVleHYFQeePNT7q67UoL4Q Java 11 特性详解 基于嵌套的访问控制 与 Java 语言 ...

  3. JDK/Java 17 可能带来什么新特性?

    点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 JDK/Java ...

  4. 面试官系统精讲Java源码及大厂真题 - 03 Java 常用关键字理解

    03 Java 常用关键字理解 引导语 Java 中的关键字很多,大约有 50+,在命名上我们不能和这些关键字冲突的,编译会报错,每个关键字都代表着不同场景下的不同含义,接下来我们挑选 6 个比较重要 ...

  5. Java 17的这些新特性,Java迈入新时代

    前言 2021年9月14日Java 17发布,作为新时代的农民工,有必要了解一下都有哪些新东西. Java 17是Java 11以来又一个LTS(长期支持)版本,Java 11 和Java 17之间发 ...

  6. 从Java 9 到 Java 17之Java 10

    在上一篇我们对Java 9的特性 Java 10 从Java 10 开始,Java的迭代周期缩短为半年,半年发布一个版本. 局部变量类型推断 在Java 6时初始化一个Map需要我们这样来声明: Ma ...

  7. JAVA 17版本介绍(一)安装环境介绍

    为什么笔者会写这篇文章,主要还是Java更新支持来说.首先我们要知道LTS版本JDK和普通JDK的区别. (LTS版本,Long-Term-Support),Java 大版本周期变化后的长期支持版本. ...

  8. Java 17 新特性

    如果您想比较不同版本的 Java API,有一个很棒的工具Java Version Almanac. 我们跳过中间的版本直接对比Java8和Java17和我们开发有关的差异. Java 17 特性 1 ...

  9. Java 8 腰斩!Java 17 暴涨 430%!!(文末福利)

    New Relic 最新发布了一份 "2023 年 Java 生态系统状况报告",旨在提供有关当今 Java 生态系统状态的背景和见解.该报告基于从数百万个提供性能数据的应用程序中 ...

  10. 从 java 8 到 java 17

    Jdk17发布已经一年多了,java 8 实在是太老了,最近项目上准备从java 8 升级到 java 17. 本文整理和记录了部分 个人认为常用的新特性.以做记录和参考,如有不准确的地方,请大家指正 ...

最新文章

  1. vs code中文乱码解决方法
  2. java统计 pv uv_统计PV、UV的新武器——Aviator
  3. 李战:悟透JavaScript 【转】
  4. 最全VR产业链全景图(必收藏)
  5. OpenStack入门篇(八)之镜像服务Glance
  6. 三插头内部结构图_三方面维护硬度计才能使寿命更长久
  7. vue数组变化视图_vue数组操作不更新视图问题(示例代码)
  8. 基本算法研究1-冒泡排序算法测试
  9. 《C++游戏开发》笔记十三 平滑过渡的战争迷雾(一) 原理:Warcraft3地形拼接算法...
  10. win7 64位MMC管理控制台使用“远程桌面”
  11. [转]Microsoft SQL Server Management Studio Express 使用SQL验证登录sa
  12. 企业系统软件你知道哪些?
  13. MATLAB 指定线型和颜色
  14. matlab中如何求导数,matlab如何求导数
  15. 功不唐捐——《程序员职场第一课》后记
  16. 【c++】Lanelet2 Examples笔记(二)
  17. 实施配置 b/s 架构 webERP
  18. 分享30个PHP源码,总有一款适合你
  19. Vue3+ Vue-cli (2) 组件篇
  20. java项目开发实例spring boot框架实现的理财记账财务管理系统

热门文章

  1. mount: RPC: Unable to receive; errno = Connection refused 的解决方法
  2. Snell Advanced Media选择金雅拓保护其知识产权
  3. BZOJ2038:[2009国家集训队]小Z的袜子——题解
  4. centos-7 charpter one
  5. js 自带的 map() 方法
  6. Zorin OS:Windows用户无痛转移Linux
  7. Rancher Managed Network实践
  8. Android帧动画的实现
  9. HibernateTemplate.save()与HibernateTemplate.update() 无法写入数据库的问题
  10. 29.卷1(套接字联网API)---数据链路访问