Java-- Maps
Java–Maps
HashMap
这是Java里最为常用的一种map结构,散列表,是根据hashcode存储<key,value>键值对,并没有顺序。一般刷题是主要允许用了其O(1)的查找速度。
其内部实现结构:实际上是一个链表的数组。
HashMap最多只允许一条记录的键为Null;允许多条记录的值为 Null;HashMap不支持线程的同步,即任一时刻可以有多个线程同时写HashMap;可能会导致数据的不一致
HashMap默认的初始化大小为16。之后每次扩充,容量变为原来的2倍。
非线程安全
常用method:
operation | function |
---|---|
插入 | put(E Key, E value) |
查找 | get(E key) |
是否存在某个键 | containsKey(E key) |
是否存在某个值 | containsValue(E value) |
集合 | entrySet() , keySet() |
TreeMap
主要是使用其排序的功能,TreeMap能够把它保存的记录根据键排序,默认是按键值的升序排序,也可以指定排序的比较器,当用Iterator 遍历TreeMap时,得到的记录是排过序的。
其底层数据结构是红黑树,注意,该树总是会通过左旋或者右旋来保持平衡状态,在有序的前提下保证了尽可能低的查找深度
非线程安全
常用method
operation | function |
---|---|
查找 | ceilingEntry(K key) |
返回最大的小于等于key的键值对,同时还有ceilingKey(K key) | |
对应的有floorEntry(K key) 和 floorKey() | |
firstEntry()—Returns a key-value mapping associated with the least key in this map, or null if the map is empty. | |
get(K key) | |
插入 | put(K key, V value) |
是否存在某个键 | containsKey(E key) |
是否存在某个值 | containsValue(E value) |
集合 | entrySet() , keySet() |
LinkedHashMap
其实是个HashMap + LinkedList
LinkedHashMap保存了记录的插入顺序,在用Iterator遍历LinkedHashMap时,先得到的记录肯定是先插入的.也可以在构造时用带参数,按照应用次数排序。在遍历的时候会比HashMap慢,不过有种情况例外,当HashMap容量很大,实际数据较少时,遍历起来可能会比LinkedHashMap慢,因为LinkedHashMap的遍历速度只和实际数据有关,和容量无关,而HashMap的遍历速度和他的容量有关。
(copy from: https://www.cnblogs.com/jiduoduo/p/6006662.html)
非线程安全
常用method
operation | function |
---|---|
插入 | put(E Key, E value) |
查找 | get(E key) |
是否存在某个键 | containsKey(E key) |
是否存在某个值 | containsValue(E value) |
集合 | entrySet() , keySet() |
Java-- Maps相关推荐
- Top 10 Mistakes Java Developers Make(转)
文章列出了Java开发者最常犯的是个错误. 1.将数组转换为ArrayList 为了将数组转换为ArrayList,开发者经常会这样做: ? 1 List<String> list = A ...
- java writestartarray_jackson的基础知识
jackson是一个用于java与json.xml直接相互转化的api. jackson可以将json字符串反序列化城java对象,也可以将java对象序列化为json字符串, 通过创建objectm ...
- 有关于Java Map,应该掌握的8个问题
点击上方 好好学java ,选择 星标 公众号 重磅资讯.干货,第一时间送达 今日推荐:一个线程池 bug 引发的 GC 思考!个人原创+1博客:点击前往,查看更多 前言 最近几天看了几篇有关于Jav ...
- java微服务,微在哪_Java:ChronicleMap第3部分,快速微服务
java微服务,微在哪 标准Java Maps需要在启动时进行初始化. 了解如何利用可从文件初始化的ChronicleMaps并显着减少微服务启动时间,以及如何在JVM之间共享Maps. 内置的Map ...
- Java 获取集合元素的值
遍历从Collection接口延伸出的List.Set和以键值对形式作存储的Map类型的集合,我们分别使用了普通for,增强型的 for ,iterator 等方式来遍历集合 完整代码 import ...
- Java 集合List、Set、HashMap操作二(Map遍历、List反向、Set删除指定元素,集合只读、TreeMap操作、List转Array、List移动元素)
Map遍历 import java.util.Map; import java.util.HashMap; import java.util.HashSet; import java.util.Ite ...
- python调用java方法_python调用Java方法传入HashMap ArrayList
1.Java代码: package com; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap ...
- JRuby 1.6.5发布 Ruby语言的Java实现
JRuby社区近日发布了JRuby的最新版本1.6.5. JRuby是Ruby编程语言的100%纯Java实现,它结合了Ruby简洁的语法以及Java丰富的类库. JRuby社区称,1.6.x系列主要 ...
- java 集合遍有几种方法_Java 集合遍历的几种方法
以下实例演示了如何遍历从Collection接口延伸出的List.Set和以键值对形式作存储的Map类型的集合,以下我们分别使用了普通for,增强型的 for ,iterator 等方式来遍历集合: ...
- Java集合遍历总结
List与Set类型集合的遍历 import java.util.ArrayList; import java.util.HashSet; import java.util.Iterator; imp ...
最新文章
- IntelliJ IDEA 2020.2.4款 神级超级牛逼插件推荐
- 线阵相机和面阵相机的区别及应用
- 存储虚拟化大幅减少了宕机时间
- C#导出Excel和相关打印设置
- windows编程(八)
- BAT 批处理脚本教程
- 2021-08-05学习日记
- 使用ASP.NET Core 3.x 构建 RESTful API - 3.1 API资源命名
- java 取Blob转为String
- Qt工作笔记-QMap的进一步操作
- 程序员编程艺术第二十七章:不改变正负数相对顺序重新排列数组(无解?)
- mysql查询报错2014_mysql Hibernate 查询时用别名报错
- 《Python入门到精通》文件操作
- 高响应比优先调度算法和短作业优先调度算法
- google chrome 同步书签 查看gmail邮箱 谷歌浏览器同步助手
- iis 值不在预期的范围错误解决办法
- Matlab_插值与抽取
- matlab测量平差实验报告,测量平差实习心得精选三篇
- HTML5游戏出现新转机
- mysql的一些介绍