从头认识java-15.7 Map(1)-使用数组来简单模拟Map的创建
来源:互联网 发布:linux dhcp命令 编辑:程序博客网 时间:2024/06/15 15:46
这一章节我们来使用数组模拟一下Map,了解一下Map的创建。
1.Map是什么?
Map,映射表,也叫关联数组,维护“键-值”的关联。
2.使用数组模拟Map
package com.ray.ch15;import java.util.HashSet;import java.util.Set;public class Test<T> {public static void main(String[] args) {AssociativeArray<String, String> map = new AssociativeArray<String, String>(2);map.put("one", "1");map.put("two", "2");try {map.put("three", "3");} catch (Exception e) {System.out.println("too many objects");}for (String key : map.getKeySet()) {System.out.println(map.getByKey(key));}}}class AssociativeArray<K, V> {private Object[][] objects;private int index = 0;public AssociativeArray(int count) {objects = new Object[count][2];}public void put(K key, V value) {if (index >= objects.length) {throw new ArrayIndexOutOfBoundsException();}objects[index++] = new Object[] { key, value };}public Set<K> getKeySet() {Set<K> set = new HashSet<K>();for (int i = 0; i < objects.length; i++) {set.add((K) objects[i][0]);}return set;}@SuppressWarnings("unchecked")public V getByKey(K key) {V v = null;for (int i = 0; i < objects.length; i++) {if (objects[i][0] == key) {v = (V) objects[i][1];}}return v;}}
输出:
too many objects
2
1
上面的代码使用数组来模拟了Map的创建。
解释:
(1)上面使用Object数组来作为底层数据存储结构
(2)通过数组的赋值实现get方法
(3)通过遍历数组实现getKeyset和get方法
注意:
上面的代码是最简单的实现,没有经过任何的优化,存在各种的问题,我们将在后面结束java是通过什么实现来进行优化的。
总结:我们这一章节主要介绍怎样使用数组来简单模拟map的创建。
这一章节就到这里,谢谢。
-----------------------------------
目录
1 1
- 从头认识java-15.7 Map(1)-使用数组来简单模拟Map的创建
- 从头认识java-15.7 Map(7)-TreeMap与LinkedHashMap
- 从头认识java-9.10 Map
- 从头认识java-15.7 Map(2)-介绍HashMap的工作原理-put方法
- 从头认识java-15.7 Map(3)-介绍HashMap的工作原理-get方法
- 从头认识java-15.7 Map(6)-介绍HashMap的工作原理-装载因子与性能
- java使用数组实现简单的Map
- 从头认识java-15.1 填充容器(3)-填充Map
- 从头认识java-15.7 Map(4)-介绍HashMap的工作原理-hash碰撞(经常作为面试题)
- 从头认识java-4.8 数组的初始化(1)
- 从头认识java-15.7 Map(5)-介绍HashMap的工作原理-Key变了,能不能get出原来的value?(偶尔作为面试题)
- 使用Object模拟Java的Map
- Java Map简单使用
- map的简单模拟实现
- 从头认识Spring-1.12 注入Map
- 从头认识java-1.8 创建和操纵对象(1)
- 从头认识java-14.4 Java提供的数组的实用功能(1)
- map的简单使用
- android 实现按住说话功能
- VISUALSVN 5.1.2 破解
- HierarchyViewer无法连接真机调试
- 禁止Android中的返回键
- iOS中消息的传递机制
- 从头认识java-15.7 Map(1)-使用数组来简单模拟Map的创建
- 读取applicationContext.xml报错
- Java常用工具类总结(二)
- 尚未配置为Web项目XXXX指定的本地IIS URL HTTP://localhost
- 时间戳转换为时间格式
- 360公司开源Atlas快速上手安装配置
- iOS开发之无限轮播图片
- C# 获取计算机MAC
- 《高效开发之道》读书笔记