Thinking in Java 17.8 理解Map
简单的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相关推荐
- 【Java】如何理解Java中的双列集合Map?
1 Map<K,V>接口 1.1 特点 双列集合一个元素包含俩值 Key不可以重复,Value可以重复 Key和Value一一对应 Key和Value可以时任意类型 1.2 常用方法 pu ...
- 4.6 W 字总结!Java 11—Java 17特性详解
作者 | 民工哥技术之路 来源 | https://mp.weixin.qq.com/s/SVleHYFQeePNT7q67UoL4Q Java 11 特性详解 基于嵌套的访问控制 与 Java 语言 ...
- JDK/Java 17 可能带来什么新特性?
点击上方"朱小厮的博客",选择"设为星标" 后台回复"书",获取 后台回复"k8s",可领取k8s资料 JDK/Java ...
- 面试官系统精讲Java源码及大厂真题 - 03 Java 常用关键字理解
03 Java 常用关键字理解 引导语 Java 中的关键字很多,大约有 50+,在命名上我们不能和这些关键字冲突的,编译会报错,每个关键字都代表着不同场景下的不同含义,接下来我们挑选 6 个比较重要 ...
- Java 17的这些新特性,Java迈入新时代
前言 2021年9月14日Java 17发布,作为新时代的农民工,有必要了解一下都有哪些新东西. Java 17是Java 11以来又一个LTS(长期支持)版本,Java 11 和Java 17之间发 ...
- 从Java 9 到 Java 17之Java 10
在上一篇我们对Java 9的特性 Java 10 从Java 10 开始,Java的迭代周期缩短为半年,半年发布一个版本. 局部变量类型推断 在Java 6时初始化一个Map需要我们这样来声明: Ma ...
- JAVA 17版本介绍(一)安装环境介绍
为什么笔者会写这篇文章,主要还是Java更新支持来说.首先我们要知道LTS版本JDK和普通JDK的区别. (LTS版本,Long-Term-Support),Java 大版本周期变化后的长期支持版本. ...
- Java 17 新特性
如果您想比较不同版本的 Java API,有一个很棒的工具Java Version Almanac. 我们跳过中间的版本直接对比Java8和Java17和我们开发有关的差异. Java 17 特性 1 ...
- Java 8 腰斩!Java 17 暴涨 430%!!(文末福利)
New Relic 最新发布了一份 "2023 年 Java 生态系统状况报告",旨在提供有关当今 Java 生态系统状态的背景和见解.该报告基于从数百万个提供性能数据的应用程序中 ...
- 从 java 8 到 java 17
Jdk17发布已经一年多了,java 8 实在是太老了,最近项目上准备从java 8 升级到 java 17. 本文整理和记录了部分 个人认为常用的新特性.以做记录和参考,如有不准确的地方,请大家指正 ...
最新文章
- vs code中文乱码解决方法
- java统计 pv uv_统计PV、UV的新武器——Aviator
- 李战:悟透JavaScript 【转】
- 最全VR产业链全景图(必收藏)
- OpenStack入门篇(八)之镜像服务Glance
- 三插头内部结构图_三方面维护硬度计才能使寿命更长久
- vue数组变化视图_vue数组操作不更新视图问题(示例代码)
- 基本算法研究1-冒泡排序算法测试
- 《C++游戏开发》笔记十三 平滑过渡的战争迷雾(一) 原理:Warcraft3地形拼接算法...
- win7 64位MMC管理控制台使用“远程桌面”
- [转]Microsoft SQL Server Management Studio Express 使用SQL验证登录sa
- 企业系统软件你知道哪些?
- MATLAB 指定线型和颜色
- matlab中如何求导数,matlab如何求导数
- 功不唐捐——《程序员职场第一课》后记
- 【c++】Lanelet2 Examples笔记(二)
- 实施配置 b/s 架构 webERP
- 分享30个PHP源码,总有一款适合你
- Vue3+ Vue-cli (2) 组件篇
- java项目开发实例spring boot框架实现的理财记账财务管理系统
热门文章
- mount: RPC: Unable to receive; errno = Connection refused 的解决方法
- Snell Advanced Media选择金雅拓保护其知识产权
- BZOJ2038:[2009国家集训队]小Z的袜子——题解
- centos-7 charpter one
- js 自带的 map() 方法
- Zorin OS:Windows用户无痛转移Linux
- Rancher Managed Network实践
- Android帧动画的实现
- HibernateTemplate.save()与HibernateTemplate.update() 无法写入数据库的问题
- 29.卷1(套接字联网API)---数据链路访问