- 浏览: 86288 次
- 性别:
- 来自: 北京
文章分类
- 全部博客 (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 71问题: 当在window ... -
面试之hashmap
2020-06-16 06:41 0hashmap经常会问到的面试题 1、JDK8中的HashM ... -
java 枚举values()方法
2019-07-30 20:41 374工作中,同事 ... -
newHashMapWithExpectedSize
2019-07-30 19:45 1154newHashMapWithExpectedSize 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 327整理记录一些面试要点 ... -
架构演进
2018-12-21 00:54 342一传统垂直mvc项目 垂直架构图:表示层->业务逻辑层- ... -
集群中session共享
2018-12-20 23:25 0当项目演进时,一个节点出错,如何保证域名能访问到别的节点。 一 ... -
父类子类静态代码块执行
2018-08-22 15:23 0先看一个基础面试题: package com.jbx.te ... -
数组元素的初始化
2018-07-10 17:16 456直接上代码 ,char的初始化值是'\u0000' p ... -
统计一个字符串中每个字符串出现的次数
2018-07-03 17:43 576经常遇到这个问题:总结一下 思路和代码 import ja ... -
DateUtil
2018-03-15 20:53 455记录一下常用的工具类,方便使用的时候可以获取。 pack ... -
indexOf判断一个字符串是否包含另一个字符串
2018-02-26 08:58 474jdk中的表述如下 indexOf public int in ... -
eclipse 添加反编译
2018-01-25 08:57 292为eclipse中*.clsas/*.class withou ... -
Java读取配置文件
2018-01-24 16:00 281Java读取配置文件test.properties 文件tes ... -
HTTP请求头
2017-12-29 16:49 0Request Headers 当访问一个action时,在谷 ... -
阿里巴巴Java开发手册(终极版)
2017-11-13 16:37 460前言 《阿里巴巴 Java 开发手册》是阿里巴巴集团技术团队 ... -
JavaEE 基础实用教程(二)------Jsp应用基础
2017-11-03 17:22 619习题 1.画出HTML文件的基 ... -
JavaEE 基础实用教程(一)---简述
2017-11-03 14:55 553第一部分 实用教程 第 ...
相关推荐
这程序应用了MapObject,对Shp文件实现了添加,放大,缩小,鹰眼图,还有DragFeedback等功能。
基础小白
很多人都知道Google Map,但是在使用时都需要在Web上使用,程序是使用C#开发的本地使用Google Map的客户端程序,同时具备数据库,Google Map显示的标记以及标记信息完全存放在本地数据库中,单击数据库中的信息,...
自己编写了STL库的map,供大家学习讨论
XML到MAP转换器的Golang编写的转换器 有时需要表示以前未知的结构。 这种通用表示形式通常是JSON,XML或数据映射结构形式的字符串。 类似于map [string] interface {}或map [interface {}] interface {}。 这是从...
使用C++编写的统计字符个数的程序,使用到了map。开发环境VS 2012
应用JAVA编写的网络MAP系统,可以方便用户建立自己的地图网络系统!
stdf2map是一个基于python的轻量级命令行应用程序,用于从半导体行业中使用的自动测试设备(ATE)创建的行业标准STDF数据文件中生成外观合理的Bin晶圆图。 特征 支持STDF文件中的多个晶片 处理同一晶圆上的芯片的多...
自定义javascript的Map类,使用习惯完全依据于java的map使用习惯编写,java中map的用法基本一样,导入包即可使用
GO Map是基于unity 3D的基于位置的游戏的动态地图SDK。 每个设置和图形控件都可以直接从检查器中进行自定义,而不需要编写任何代码。
有集合A={1,2,3,4}和B={1,3,7,9,11},编写一个应用程序输出A和B交集、并集和差集 7_5.有10个硬盘,有两个重要的属性:价格和容量。编写一个应用程序,使用TreeMap,V>类,分别按照价格和容量排序并输出10个硬盘的...
解压打开后一键清理电脑垃圾,缓存垃圾,内存碎片等,电脑提速30%-50%
1、编写程序练习将以下5个Person类的对象放在一个HashSet中。 姓名:张三 身份证号:178880001 姓名:王五 身份证号:178880002 姓名:李四 身份证号:178880003 姓名:王五 身份证号:178880002 姓名:李四 身份证...
使用VC++控制台程序编写,使用map对多元obj按规定单元的大小进行排序
主要介绍了基于 ARM 核微处理器工程编译连接生成的 MAP 文件 结构、内容,简单分析工程各组成元素和生成的映象文件之间的关系。...分析说明 MAP 文件,并浅谈 MAP 文件对编写代码的作用,认识怎样编写嵌入式系统软件。
mapserver 安装程序,包含web页面的简单编写,地图放大缩小等功能,mapinfo的编写等
MapFile文件时MapServer的基本配置文件,这篇由jean-francois doyon and jeff McKenna 编写的文档可以让你对MapFile文件有一个很好的认识。
基本介绍使用反射将普通Javabean与map集合的相互转换实例,项目开发时编写自己的转换帮助类,更好满足开发时所需
本文系网上资源,主要介绍了基于ARM核微处理器工程编译产生的MAP文件结构、内容,简单分析工程各组成元素和生成的映象...通过实际例子分析说明MAP文件,并浅谈MAP文件对编写代码的作用,认识怎样编写嵌入式系统软件。
map()是一个 Python 内建函数,它允许你不需要使用循环就可以编写简洁的代码。 一、Python map() 函数 这个map()函数采用以下形式: map(function, iterable, ...) 它需要两个必须的参数: function – 针对每一...