
Map实现类,集合工具类
发布日期:2021-05-07 08:21:02
浏览次数:20
分类:精选文章
本文共 2235 字,大约阅读时间需要 7 分钟。
文章目录
一、Map接口
1. HashMap
数据结构:JDK1.8之前:哈希表(数组+单向链表);JDK1.8之后:哈希表(数组+单向链表+红黑树),当链表长度超过阈值(8)时,链表将转换为红黑树。
特点:查询快,元素无序,key不允许重复但可以为null,value可以重复。
- HashMap 是一个散列表,它存储的内容是键值对(key-value)映射。
- HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的访问速度,最多允许一条记录的键为 null,不支持线程同步。
- HashMap 是无序的,即不会记录插入的顺序。
- HashMap 继承于AbstractMap,实现了 Map、Cloneable、java.io.Serializable 接口。
public class MapDemo { public static void main(String[] args) { Mapm = new TreeMap<>(); Map h = new HashMap<>();// 创建 HashMap 对象 Sites HashMap Sites = new HashMap (); // 添加键值对 Sites.put(1, "Google"); Sites.put(2, "Runoob"); Sites.put(3, "Taobao"); Sites.put(4, "Zhihu"); // 输出 key 和 value for (Integer i : Sites.keySet()) { System.out.println("key: " + i + " value: " + Sites.get(i)); } // 返回所有 value 值 for (String value : Sites.values()) { // 输出每一个value System.out.print(value + ", "); } }}
2. LinkedHashMap
JDK1.8之前:哈希表(数组+双向链表);JDK1.8之后:哈希表(数组+双向链表+红黑树),当链表长度超过阈值(8)时,转换为红黑树。
![]()
3. HashTable(不用)
哈希表 ,key不允许重复并且不可以为null,value可以重复。
底层分析:HashTable和Vector一样是古老的集合,有遗留缺陷,在JDK1.2之后 被更先进的集合取代了;HashTable是线程安全的,速度慢,HashMap是线程不安全的,速度快; ps:Hashtable的子类Properties现在依然活跃,Properties集合是一个唯一和IO流结合的集合。![]()
4. TreeMap
数据结构: 红黑树
特点:查询快,元素有序,key不允许重复并且不可以为null,value可以重复。![]()
5. ConcurrentHashMap
JDK1.7 Segment 数组、HashEntry 组成,和 HashMap 一样,仍然是数组加链表。
JDK1.8 采用红黑树等![]()
二、工具类
1. Collections工具类
// 对list集合排序sort(list);sort(list,comparator)// 二分查找int binarySearch(list,key);int binarySearch(list,key,Comparator);// 按照指定比较器进行排序 max(Collection); max(Collection,comparator); min(Collection); min(Collection,comparator); // 反转 reverse(list); // 将不同步的集合变为同步的集合 Set synchronizedSet(SETs) Map synchronizedMaP(Map m) List synchronizedList(List list)
2. Arrays工具类
// 二分查找binarySearch(int[]);binarySearch(double[]);// 数组排序sort(int [])sort(char[])// 将数组变成字符串toString(int []);// 复制数组copyOf(int/boolean...[] original,int newLength); original:源数组 newLenght:新数组长度copyOfRange(int/float[]... original, int from, int // 比较数组是否相同equals(int[],int[]);// 数组变成集合Arrays.asList(T[]);
发表评论
最新留言
不错!
[***.144.177.141]2025年03月25日 06时55分36秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
剑指Offer面试题:9.二进制中1的个数
2021-05-09
《你是在做牛做马还是在做主管》- 读书笔记
2021-05-09
ASP.NET Core on K8S学习之旅(12)Ingress
2021-05-09
重新温习软件设计之路(4)
2021-05-09
《刷新》:拥抱同理心,建立成长型思维
2021-05-09
MVC3+NHibernate项目实战(二) :数据库访问层
2021-05-09
Flask入门
2021-05-09
MySQL数据库与python交互
2021-05-09
python如何对字符串进行html转义与反转义?
2021-05-09
开发小白也毫无压力的hexo静态博客建站全攻略 - 躺坑后亲诉心路历程
2021-05-09
java例题_24 逆向输入数字
2021-05-09
不管人生怎么走,都需要实时回头看看
2021-05-09
golang基础--类型与变量
2021-05-09
Bitcoin区块链攻击方式
2021-05-09
.NetCore外国一些高质量博客分享
2021-05-09
Mysql的基本操作(一)增、删、改
2021-05-09
解决WebRTC中不同的浏览器之间适配的问题
2021-05-09