SortedMap接口实现排序

SortedMap接口主要提供有序的Map实现。SortedMap接口是排序接口,只要是实现了此接口的子类,都属于排序的子类,TreeMap也是此接口的一个子类

Map的主要实现有HashMap,TreeMap,HashTable,LinkedHashMap。

TreeMap实现了SortedMap接口,保证了有序性。默认的排序是根据key值进行升序排序,也可以重写comparator方法来根据value进行排序。

HashMap与TreeMap的比较

 Map<String, Object> hashMap = new HashMap<String, Object>();hashMap.put("1", "a");hashMap.put("5", "b");hashMap.put("2", "c");hashMap.put("4", "d");hashMap.put("3", "e");Set<Map.Entry<String, Object>> entry = hashMap.entrySet();for (Map.Entry<String, Object> temp : entry) {System.out.println("hashMap:" + temp.getKey() + " 值" + temp.getValue());}System.out.println("\n");SortedMap<String, Object> sortedMap = new TreeMap<String, Object>();sortedMap.put("1", "a");sortedMap.put("5", "b");sortedMap.put("2", "c");sortedMap.put("4", "d");sortedMap.put("3", "e");Set<Map.Entry<String, Object>> entry2 = sortedMap.entrySet();for (Map.Entry<String, Object> temp : entry2) {System.out.println("sortedMap:" + temp.getKey() + " 值" + temp.getValue());}

看上去还以为HashMap也保证了有序性,其实是随机的,如果值设置的复杂一点,如下例

 

 Map<String,Object> hashMap = new HashMap<String,Object>();hashMap.put("1b", "a");hashMap.put("2", "b");hashMap.put("4b", "d");hashMap.put("3", "c");hashMap.put("2b", "d");hashMap.put("3b", "c");Set<Map.Entry<String, Object>> entry = hashMap.entrySet();for(Map.Entry<String, Object> temp : entry){System.out.println("hashMap:"+temp.getKey()+" 值"+temp.getValue());}System.out.println("\n");SortedMap<String,Object> sortedMap = new TreeMap<String,Object>();sortedMap.put("1b", "a");sortedMap.put("2", "b");sortedMap.put("4b", "d");sortedMap.put("3", "c");sortedMap.put("2b", "d");sortedMap.put("3b", "c");Set<Map.Entry<String, Object>> entry2 = sortedMap.entrySet();for(Map.Entry<String, Object> temp : entry2){System.out.println("sortedMap:"+

很显然只有TreeMap保证了有序性。

 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/269727.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

mysql漏洞包_MySQL npm包中的本地文件泄露漏洞

“A pure node.js javascript Client implementing the MySQL protocol.”漏洞在某次安全评估中&#xff0c;Synacktiv专家无意中发现某个应用可以从另一台MySQL服务器中读取敏感数据&#xff0c;而该应用程序正是使用了mysql的npm软件包。该npm软件包所支持的LOAD DATA LOCAL命…

C# 对象与JSON串互相转换

DoNet2.0 需要借助于Newtonsoft.Json.dll 1 代码2 3 using System;4 using System.IO;5 using System.Text;6 using Newtonsoft.Json;7 8 namespace OfflineAcceptControl.UCTools9 { 10 public class JsonTools 11 { 12 // 从一个对象信息生成Json串 13 …

mysql 日期查询今天_Mysql 日期查询今天、昨天、近7天、近30天、本月、上一月、本季...

今天select * from 表名 where to_days(时间字段名) to_days(now());昨天SELECT * FROM 表名 WHERE TO_DAYS( NOW( ) ) - TO_DAYS( 时间字段名) < 1近7天SELECT * FROM 表名 where DATE_SUB(CURDATE(), INTERVAL 7 DAY) < date(时间字段名)近30天SELECT * FROM 表名 whe…

java实现MD5加密

MD5加密是一种常见的加密方式&#xff0c;我们经常用在保存用户密码和关键信息上。那么它到底有什么&#xff0c;又什么好处呢&#xff0c;会被这么广泛的运用在应用开发中。 信息-摘要算法&#xff08;Message-digest Algorithm 5&#xff0c;MD5&#xff09;于90年代初由MIT …

THINKPHP5判断当前浏览器请求方式

作用代码是否为 GET 请求if (Request::instance()->isGet())是否为 POST 请求if (Request::instance()->isPost())是否为 PUT 请求if (Request::instance()->isPut())是否为 DELETE 请求if (Request::instance()->isDelete())是否为 Ajax 请求if (Request::instanc…

jspwiki mysql_Wiki.js初体验

利用JSPWiki搭建简易企业wiki平台。今天介绍一下基于NodeJS技术的开源项目Wiki.js&#xff0c;其界面简洁美观&#xff0c;支持多种编辑器、多种用户验证方式、多种备份存储方式&#xff0c;支持国际化、自定义主题(Theme)、流量分析等。更多正在开发中的功能&#xff0c;界面也…

java中Map有哪些实现类

Java中的map是一个很重要的集合&#xff0c;他是一个接口&#xff0c;下面继承它实现了多个实现类&#xff0c;这些类各有千秋&#xff0c;各自有个各自的优点和缺点 如下图 map的主要特点是键值对的形式&#xff0c;一一对应&#xff0c;且一个key只对应1个value。其常用的map…

h2 mysql 兼容_H2内存数据库对sql语句的支持问题 sql放到mysql数据库中能跑

该楼层疑似违规已被系统折叠 隐藏此楼查看此楼### The error may involve com.yrs.modules.classes.stu.teacher.mapper.ClassesStuTeacherMapper.queryStudentInfoByclasses### The error occurred while executing a query### SQL: SELECT ysi.stu_id, ysi.stu_name, ysi.stu…

poj1743 Musical Theme

神题&#xff01;&#xff01; 2333&#xff0c;要求可以给区间加减同一个数&#xff0c;然后我就懵逼了&#xff0c;&#xff0c;%%题解&#xff0c;可以用差分嘛2333 所以原来的区间长度差分之后就要减一了&#xff0c; 然后现在用sa搞出height数组&#xff0c;然后对于>l…

设备的分配与调度简单方案_连铸生产调度与动态重调度的优化与研究-3,炼钢技术(3)原创...

基于生产扰动分类的二阶段遗传算法求解动态重调度问题4.1引言电炉炼钢-连铸生产对整个生产的节奏要求较高&#xff0c;各个工序各个工位间配合要比较紧密&#xff0c;但实际的生产过程中总会存在许多不可避免的扰动因素&#xff0c;必须根据实时现场的监控数据来进行动态调度以…

敏捷开发总结(1)软件研发过程

敏捷开发总结&#xff08;1&#xff09;软件研发过程 转载于:https://www.cnblogs.com/lexiaofei/p/6644326.html

mysql截取字符串中的部分内容_Mysql字符串截取及获取指定字符串中的数据

{"moduleinfo":{"card_count":[{"count_phone":1,"count":1}],"search_count":[{"count_phone":4,"count":4}]},"card":[{"des":"阿里云数据库专家保驾护航&#xff0c;为用户…

java for循环 嵌套for循环-标签使用

continue和break可以改变循环的执行流程&#xff0c;但在多重循环中&#xff0c;这两条语句无法直接从内层循环跳转到外层循环。在C语言中&#xff0c;可以通过goto语句实现多重循环的跳转&#xff0c;但在非循环结构中使用goto语句会使程序的结构紊乱&#xff0c;可读性变差。…

WPF 窗体边框处理

一般做wpf窗口时都不会使用默认的标题栏等&#xff0c;会把他隐藏掉 此时设置以下属性 WindowStyle、AllowsTransparency、ResizeMode 中的两个或三个都能达到目的。 有一种场景&#xff0c;针对.Net 4.0及以下版本&#xff0c;4.5 直接就支持操作 1. 隐藏边框 2.保留鼠标移动到…

数据加密辅助类(默认编码UTF-8)

public final class SecurityUtil {private SecurityUtil() {}/*** 默认算法密钥*/private static final byte[] ENCRYPT_KEY { -81, 0, 105, 7, -32, 26, -49, 88 };public static final String CHARSET "UTF-8";/*** BASE64解码* * param key* return* throws Ex…

mysql 查询时间转换_数据库查询时日期的转换

首先简单说明一下&#xff0c;laravel框架中查询并打印sql语句的办法&#xff0c;不管任何时候由于sql语句报错时&#xff0c;都可以先打印一下&#xff0c;分析一下是什么原因造成的错误①引入laravel框架DB类useIlluminate\Support\Facades\DB;②开启框架日志记录DB::connect…

浅谈Spring之@Nullable、@NonNull注解

NonNull 可以标注在方法、字段、参数之上&#xff0c;表示对应的值不可以为空 Nullable 注解可以标注在方法、字段、参数之上&#xff0c;表示对应的值可以为空

事务概念和事务四大特性和隔离级别

什么是事务 事务四大特性 原生的JDBC事务处理 事务的隔离级别

python中坐标怎么表示_如何在Python中以像素表示(有限)平面上的坐标

我假设你有十进制坐标&#xff0c;比如50.3869881&#xff0c;-4.6177269&#xff0c;南北优先。在因为你有一个相当小的地图&#xff0c;我们不需要担心地球的曲率&#xff0c;我们可以假设我们有一个线性地图&#xff0c;所以地图上点的(x&#xff0c;y)坐标将是x longitude…