网站首页 > 精选教程 正文
Map介绍
常用的Map有HashMap,TreeMap,LinkedHashMap
HashMap:最常用的Map,根据key的HashCode值来存储数据,根据key可以直接获取它的Value,具有很快的访问速度。HashMap最多只允许一条记录的key值为null(多条会覆盖);允许多条记录的Value为null。非线程安全
TreeMap: 根据key排序,默认是按升序排序,也可以指定排序的比较器,遍历TreeMap时,得到的记录是排过序的。TreeMap不允许key的值为null。非线程安全
LinkedHashMap: 插入顺序,遍历LinkedHashMap时,先得到的记录肯定是先插入的。继承HashMap,非线程安全
TreeMap排序
TreeMap只能根据key进行排序,TreeMap本身是个二叉树,元素的顺序是由key的值决定的
TreeMap内部默认有个Comparator,在new的时候可以覆盖默认的Comparator定义自己的排序规则,不过还是只能根据key进行排序
private static void sortTreeMap(){
Map<String,String> map =new TreeMap<>((k1,k2)->{
return k1.compareTo(k2);
});
map.put("a","2");
map.put("c","5");
map.put("d","6");
map.put("b","1");
map.forEach((k,v)->{
System.out.println(k+":"+v);
});
}
输出结果
a:2
b:1
c:5
d:6
HashMap排序
HashMap本身是没有顺序的,不能直接对其进行排序
要排序只能先转成list然后对应list排序后,再转成LinkedHasHMap
这样做排序完全由自己定义,既可以多key排序也可以多value排序
private static void sortMapValue(){
Map<String,String> map =new HashMap<>();
map.put("a","2");
map.put("c","5");
map.put("d","6");
map.put("b","1");
List<Map.Entry<String,String>> lstEntry=new ArrayList<>(map.entrySet());
Collections.sort(lstEntry,((o1, o2) -> {
return o1.getValue().compareTo(o2.getValue());
}));
lstEntry.forEach(o->{
System.out.println(o.getKey()+":"+o.getValue());
});
//如果一定要返回一个map,就new一个LinkedHashMap,将list中所有值依次put进去就可以
/*LinkedHashMap<String,String> linkedHashMap=new LinkedHashMap<>();
lstEntry.forEach(o->{
linkedHashMap.put(o.getKey(),o.getValue());
});*/
}
输出结果
b:1
a:2
c:5
d:6
- 上一篇: java 二维数组开发五子棋(控制台版)人人对战
- 下一篇: ???数组中的逆序对(归并排序思想)
猜你喜欢
- 2024-11-28 JAVA数据结构和算法-简单排序之选择排序
- 2024-11-28 面试官问我Arrays.sort()为什么可以对int等数组进行排序
- 2024-11-28 Java几种排序方式
- 2024-11-28 动力节点教学:多维数组用法
- 2024-11-28 「剑指offer题解」二维数组中的查找
- 2024-11-28 2021-09-26:搜索旋转排序数组。整数数组 nums 按升序排列,数组中
- 2024-11-28 java 数组动态接收和冒泡排序
- 2024-11-28 嵌入式C语言基础编程——5年程序员给你讲解字符数组,精品干货
- 2024-11-28 开发人员是如何使用Java进行排序?
- 2024-11-28 100个Java工具类之13:实现数组和集合排序的多种方法
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)