- 浏览: 92022 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (148)
- 全文检索 (1)
- java (29)
- xml (2)
- json (2)
- redis springmvc (1)
- Redis (5)
- 开发常识 (1)
- tomcat (2)
- 单元测试Junit (2)
- 设计模式 (2)
- spring (10)
- jvm (2)
- eclipse (4)
- echart (1)
- mybatis (1)
- mysql (3)
- web (1)
- js (2)
- PL/SQL (2)
- 其他 (1)
- 人生 (1)
- 安全 (2)
- jsp (2)
- 硬件电脑 (1)
- linux (3)
- git (10)
- oracle (8)
- ant (1)
- maven (2)
- 正则表达式 (2)
- chrome (1)
- 面试 (6)
- 多线程 (19)
- bug (11)
- java工具类 (3)
- 算法 (1)
- bug,git (1)
- shell (2)
- springmvc (2)
- Java8 (1)
- 消息队列-rocketmq (1)
- es (1)
- dubbo (0)
- spring cloud (0)
- hashmap (0)
- springboot (1)
- velocity (0)
在爱酷学习网上学习Java视频,其中有一个自己实现map的功能,这里记录一下如何实现
package com.jbx.hash; /** * 自定义实现Map的功能 不完美的原因是for循环影响效率 * @author Administrator *Map:存放键值对,根据键对象找对应的值对象,键不能重复 */ public class SxtMap001 { SxtEntry[] arr = new SxtEntry[990]; int size; public void put(Object key,Object value){ SxtEntry e = new SxtEntry(key,value); //解决键值唯一的问题 for (int i=0;i<size; i++){ if(arr[i].key.equals(key)){ arr[i].value = value; return ; } } arr[size++] = e; } public Object get(Object key){ for (int i = 0; i < size; i++) { if(arr[i].key.equals(key)){ return arr[i].value; } } return null; } public boolean containsKey(Object key){ for(int i =0;i<size;i++){ if(arr[i].key.equals(key)){ return true; } } return false; } public boolean containsValue(Object value){ for(int i =0;i<size;i++){ if(arr[i].value.equals(value)){ return true; } } return false; } public static void main(String[] args) { SxtMap001 m = new SxtMap001(); m.put("1", "你好"); m.put("2", "拜拜"); m.put("2", "拜拜拜"); System.out.println(m.get("2"));//拜拜拜 System.out.println(m.containsKey("1"));//true System.out.println(m.containsValue("拜拜"));//false System.out.println(m.containsValue("拜拜"));//false System.out.println(m.get("2"));//拜拜拜 } } class SxtEntry{ Object key; Object value; public SxtEntry(Object key, Object value) { super(); this.key = key; this.value = value; } }
评论
1 楼
幻影寒狼
2017-10-30
for循环优化
import java.util.LinkedList; /** * * Map:存放键值对,根据键对象找对应的值对象,键不能重复 * Map底层实现:数组+链表,每个对象都有对应的hashCode值,将hashCode取余,分区间片段进行存储,片段以链表的形式进行存储 * 知识拓展:两个内容相同的对象应该具有相等的hashcodes,反之,则不然。 * */ public class MyHashMap { private LinkedList[] arr = new LinkedList[999];// Map底层实现:数组+链表 private int size; public int size() { return this.size; } //插入 public void put(Object key, Object value) { MyEntry e = new MyEntry(key, value); int hash = key.hashCode(); hash = hash < 0 ? -hash : hash;//hashCode可能出现负值 int a = hash % arr.length; if (arr[a] == null) { LinkedList list = new LinkedList(); list.add(e); arr[a] = list; } else { LinkedList list = arr[a]; for (int i = 0; i < list.size(); i++) { MyEntry myEntry = (MyEntry) list.get(i); if (myEntry.key.equals(key)) { myEntry.value = value;// 键值重复,直接覆盖 return; } } arr[a].add(e); } } } //仿写键值对 class MyEntry { Object key; Object value; public MyEntry(Object key, Object value) { super(); this.key = key; this.value = value; } }
发表评论
-
linux 文件 dos unix格式,unix和dos下文本文件得区别
2023-09-06 23:23 161问题: 当在window ... -
面试之hashmap
2020-06-16 06:41 0hashmap经常会问到的面试题 1、JDK8中的HashM ... -
java 枚举values()方法
2019-07-30 20:41 419工作中,同事 ... -
newHashMapWithExpectedSize
2019-07-30 19:45 1287newHashMapWithExpectedSize VS ... -
java 8 stream应用
2019-07-15 11:43 01.生成map List<BusinessFacili ... -
技术知识点汇总
2019-02-12 15:47 01. LTS(light-task-scheduler) ... -
面试经历中遇到的面试题-one
2019-01-03 19:24 362整理记录一些面试要点 ... -
架构演进
2018-12-21 00:54 371一传统垂直mvc项目 垂直架构图:表示层->业务逻辑层- ... -
集群中session共享
2018-12-20 23:25 0当项目演进时,一个节点出错,如何保证域名能访问到别的节点。 一 ... -
父类子类静态代码块执行
2018-08-22 15:23 0先看一个基础面试题: package com.jbx.te ... -
数组元素的初始化
2018-07-10 17:16 494直接上代码 ,char的初始化值是'\u0000' p ... -
统计一个字符串中每个字符串出现的次数
2018-07-03 17:43 602经常遇到这个问题:总结一下 思路和代码 import ja ... -
DateUtil
2018-03-15 20:53 497记录一下常用的工具类,方便使用的时候可以获取。 pack ... -
indexOf判断一个字符串是否包含另一个字符串
2018-02-26 08:58 512jdk中的表述如下 indexOf public int in ... -
eclipse 添加反编译
2018-01-25 08:57 322为eclipse中*.clsas/*.class withou ... -
Java读取配置文件
2018-01-24 16:00 313Java读取配置文件test.properties 文件tes ... -
HTTP请求头
2017-12-29 16:49 0Request Headers 当访问一个action时,在谷 ... -
阿里巴巴Java开发手册(终极版)
2017-11-13 16:37 486前言 《阿里巴巴 Java 开发手册》是阿里巴巴集团技术团队 ... -
JavaEE 基础实用教程(二)------Jsp应用基础
2017-11-03 17:22 659习题 1.画出HTML文件的基 ... -
JavaEE 基础实用教程(一)---简述
2017-11-03 14:55 594第一部分 实用教程 第 ...
相关推荐
在“用C# MapObject编写的一个GIS程序”中,开发者已经实现了以下几个关键功能: 1. **添加Shp文件**:程序能够读取并加载Shp文件,将其中的地理数据渲染到地图上。这涉及到对MapObject库的API调用,如`IMapServer....
基础小白
例如,我们可以有一个用户信息的Map,其中键是用户ID,而对应的值是一个包含用户名、邮箱等信息的另一个Map。 ```java Map, Map, String>> users = new HashMap(); ``` 获取嵌套Map的key和value通常涉及两个步骤:...
在C++标准库中,`Map`被实现为`std::map`,但在这个场景中,我们讨论的是一个用户自定义的简易`Map`实现,名为"MyMap",这是在Visual Studio 2013环境下编写的。 自定义`Map`的主要目的是为了学习和理解数据结构的...
开发者会编写一个Controller方法,该方法会执行SQL查询,如使用JDBC、MyBatis或Hibernate等持久层框架。查询结果通常是多个行,每一行可以映射为一个Map,键可能是数据库字段名,值则是对应字段的值。 例如,使用...
在描述中提到的项目,是使用OpenGL库在Visual C++ 6.0环境下编写的,这是一个古老的但仍然广泛使用的编程环境,用于开发图形密集型应用程序。在这个项目中,开发者创建了六个图像,分别代表立方体的六个面:button、...
一种很好的SAR图像的滤波方法,效果很好的,matlab编写的函数文件,简单好用。
很多人都知道Google Map,但是在使用时都需要在Web上使用,程序是使用C#开发的本地使用Google Map的客户端程序,同时具备数据库,Google Map显示的标记以及标记信息完全存放在本地数据库中,单击数据库中的信息,...
RAMMap是一个由Mark Russinovich开发的实用程序,他是Microsoft Sysinternals套件的一部分,这个套件提供了丰富的系统分析和故障排除工具。 描述中的“解压打开后一键清理电脑垃圾,缓存垃圾,内存碎片等,电脑提速...
此外,可以使用`putAll(map2)`方法将一个Map的所有键值对复制到另一个Map中,如`explicitMap = new TreeMap(); explicitMap.putAll(map)`。 比较Map是否相等,可以使用`==`运算符,它会检查两个Map的键值对是否完全...
1. **nm命令**:nm是一个用于显示对象文件或库中符号信息的工具,可以与map文件结合使用,查看特定地址对应的函数或变量。 2. **objdump**:objdump可以用来解码各种二进制文件格式,包括显示内存映射信息,辅助分析...
`Properties`类本身就是一个`Map`,可以直接通过`entrySet()`方法访问键值对。但如果你需要一个标准的`Map, String>`,可以进行转换: ```java Map, String> map = new HashMap(); for (Map.Entry, Object> ...
如果一个元素有多个属性,这些属性将以某种形式(例如属性对象或属性Map)存储。如果元素有子元素,子元素将成为嵌套的Map或者List。 要实现XML到Map的转换,我们可以使用Java的标准库JAXB(Java Architecture for ...
9. **启动GeoMap4.0**:安装完毕后,桌面通常会生成一个GeoMap4.0的快捷方式。点击这个图标,即可启动软件并开始使用。 10. **激活与注册**:如果你的GeoMap4.0版本需要许可证,那么在首次运行时可能需要输入序列号...
文件名 "googl map" 可能是一个源代码文件或者资源文件,包含了与Google Maps集成相关的函数、类或配置信息。在C++中,这可能是一个.cpp文件,包含具体的API调用代码,或者是头文件(.h),定义了相关接口。 具体实现...
在C++编程中,`std::map`和`std::unordered_map`是两种常见的关联容器,它们都用于存储键值对,但实现机制和性能特点有所不同。本篇文章将深入探讨这两种容器在插入、遍历和查找操作上的差异,并通过实例分析它们...
【DSP实验报告—实验3 编写一个以汇编(ASM)语言为基础的DSP程序】 在数字信号处理(DSP)领域,汇编语言是不可或缺的一部分,尤其在优化关键算法性能时。本实验旨在让学生掌握汇编语言编程的基本技能,了解与C语言...
总的来说,"TSK_wafer map转换易语言源码"是一个实用的工具,通过易语言的编程实现,简化了TSK-MAP文件的分析过程。源码的开放性使得用户可以根据自己的需求进行二次开发和改进,对于学习易语言和提升晶圆测试领域的...
在Java环境中调用MapServer,通常会利用MapScript库来实现,这是一个允许编程语言与MapServer进行交互的接口。本实例主要探讨如何在Java项目中配置和使用MapServer,以及解决配置过程中遇到的问题。 首先,我们需要...
3. 创建Map:创建一个`java.util.HashMap`或其他类型的Map,用来存储XML节点的键值对。 4. 将节点添加到Map:遍历过程中,将节点名称作为键,节点内容作为值放入Map中。如果有属性,可以将属性名和属性值作为二级...