TreeSet指定排序规则

TreeSet集合如果要对添加的元素进行排序,则添加的元素所属的类要实现Comparable接口(基本类型的包装类,String类都文现了该接口),Comparable接口的compareTo()方法内会用自然比较方法对元素排序,这种排序称为类的自然排序。

如果将自定义的IPhone对象存入TreeSet,TreeSet将不会对添加的元素进行排序,IPhone对象所属的类可以通过实现Comparable接口并重写compareTo()方法实现对象元素的顺序存取。

TreeSet集合还有另一种实现排序的方式。即通过实现 Comparator接口,并实现compare()方法,这种排序称为比较器排序。

package demo1;import java.util.Collection;
import java.util.Comparator;
import java.util.Set;
import java.util.TreeSet;/*** 目标:观察TreeSet对于有值特性的数据如何排序。*      学会对自定义类型的对象进行指定规则排序*/
public class SetDemo2 {public static void main (String[] args){// 方式一:使用TreeSet集合存储元素(采用默认的排序方式)Set<Integer> sets = new TreeSet<>(); // 不重复 无索引 可排序sets.add(22);sets.add(24);sets.add(11);sets.add(11);sets.add(8);System.out.println(sets);//打印结果: [8, 11, 22, 24]Collection books=new TreeSet();// 不重复 无索引 可排序books.add ("Java就该这样学");books.add ("Java就该这样学");books.add ("Java编程基础");books.add ("Java编程基础");books.add("javaWeb基础");System.out.println(books);//打印结果:[Java就该这样学, Java编程基础, javaWeb基础]// 方式二:进行规则定制Set<IPhone>  phones=new TreeSet<>(new Comparator<IPhone>() {public int compare(IPhone o1, IPhone o2) {//return  (int)(o1.getPrice()-o2.getPrice());//升序//return  (int)(o2.getPrice()-o1.getPrice());//降序// 注意:浮点型建议直接使用Double.compare进行比较//return Double.compare(o1.getPrice(),o2.getPrice());//升序return Double.compare(o2.getPrice(),o1.getPrice());//降序}});/*Set<IPhone>  phones2=new TreeSet<>((o1, o2)->0);*/IPhone i14=new IPhone("iphone14",6299.0);IPhone i14Pro=new IPhone("iphone14Pro",7299.0);IPhone i13=new IPhone("iphone13",5299.0);phones.add(i14);phones.add(i14Pro);phones.add(i13);System.out.println(phones);//打印结果:[IPhone{model='iphone14Pro', price=7299.0},//         IPhone{model='iphone14', price=6299.0},//         IPhone{model='iphone13', price=5299.0}]}
}class  IPhone{private String model;private Double price;public Double getPrice() {return price;}public IPhone(String model, Double price) {this.model = model;this.price = price;}public String toString() {return "IPhone{" +"model='" + model + '\'' +", price=" + price +'}';}
}

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

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

相关文章

【OpenCV学习笔记12】- 更改颜色空间

关于 OpenCV 官方文档的核心操作告一段落&#xff0c;接下来开始图像处理的学习。学习笔记中会记录官方给出的例子&#xff0c;也会给出自己根据官方的例子完成的更改代码&#xff0c;同样彩蛋的实现也会结合多个知识点一起实现一些小功能&#xff0c;来帮助我们对学会的知识点…

【数学建模美赛M奖速成系列】数据可视化(二)

数据可视化&#xff08;二&#xff09; 写在前面百分比堆叠线条图优点缺点实现pythonmatlab 火山图优点实现pythonmatlab 最后 写在前面 上一篇文章为大家分享了山脊图和气泡图的绘图方法与代码&#xff0c;这里学姐为继续为大家分享百分比堆叠线条图和火山图&#xff0c;包含…

Gd-DOTA-SH钆-大环配体的结构特点 | 星戈瑞

Gd-DOTA-SH钆-大环配体是一种具有特殊结构特点的化合物。(来自星戈瑞的科研试剂) Gd-DOTA-SH这个化合物的名称可以分解为三个部分。首先&#xff0c;"Gd"代表该化合物中含有钆元素&#xff08;Gadolinium&#xff09;。其次&#xff0c;"DOTA"代表四聚乙二…

R语言【文章复现】——集成式地绘制高分辨率的多样性分布图,对方法的检验和优化,以及处理思路的思考

参考文献 本文对一篇 2022 年发表在 New Phytologist 的绘图方法文章中的技术路线进行复现。 An integrated high-resolution mapping shows congruent biodiversity patterns of Fagales and Pinales Summary 文中,作者针对在全球尺度上绘制物种分布图提出了一种全新的方法…

华为网络设备 通过路由器子接口 Dot1q终结子接口实现跨VLAN通信

(二层交换机直接跳过三层交换价接入路由器时才使用该配置。推荐使用三层交换机建立VLANIF配置更简洁明了。如果VLAN较少可直接配置&#xff1b;路由器接口&#xff0c;一个物理接口一个VLAN) S1配置 vlan batch 2 to 3interface GigabitEthernet0/0/1port link-type trunkpor…

项目人力资源管理

1计划&#xff1a;规划人力资源管理 3执行&#xff1a;组建项目团队&#xff0c;建设项目团队&#xff0c;管理项目团队 1、规划人力资源管理 确定角色&#xff0c;职责及回报关系&#xff0c;编制人员配备管理计划 需要经常性复查&#xff0c;立即修正。 需要有备选人员。…

为什么代码里需要try/catch

throw 语句用来抛出一个用户自定义的异常,在抛出错误时&#xff0c;throw 之后的语句将不会执行 const getApi (data) > {if (isNaN(data)) {throw new Error(Parameter is not a number!);console.log(bar) // 这句永远不会执行&#xff0c;throw之后的代码都不会}}情况一…

[Python练习]使用Python爬虫爬取豆瓣top250的电影的页面源码

1.安装requests第三方库 在终端中输入以下代码&#xff08;直接在cmd命令提示符中&#xff0c;不需要打开Python&#xff09; pip install requests -i https://pypi.douban.com/simple/ 从豆瓣网提供的镜像网站下载requests第三方库 pip install requests 是从国外网站下…

喜报 ,思迈特荣获广东省“专精特新”企业认定,再创新高

近日&#xff0c;广东省工业和信息化厅发布 2023年专精特新中小企业名单&#xff0c;思迈特软件凭借专业技术实力、创新研发能力、行业影响力以及卓越的企业文化&#xff0c;经过层层选拔&#xff0c;荣获广东省“专精特新”企业认定。思迈特商业智能与大数据分析软件成功上架&…

数据库:园林题库软件(《城市绿地设计规范》答题卷三 )

《城市绿地设计规范》答题卷三 填空题 1、动物笼舍、温室等特种园林建筑设计&#xff0c;必须满足动物和植物的生态习性要求&#xff0c;同时还应满足游人观赏视觉和人身安全要求&#xff0c;并满足管理人员人身安全及操作方便的要求。 2、市绿地内的建筑应充分考虑雨水径流…

智能制造工业互联网建设方案——青创智通工业物联网

智能制造已经成为工业发展的重要趋势。智能制造系统架构与工业物联网建设方案作为实现智能制造的关键环节&#xff0c;对于推动工业转型升级和提升企业竞争力具有重要意义。青创智通工业物联网重点探讨智能制造系统架构与工业物联网建设方案的核心要素、实施步骤和未来发展方向…

MySQL进阶篇(六)InnoDB 引擎

一、逻辑存储结构 &#xff08;1&#xff09;表空间 表空间是 InnoDB 存储引擎逻辑结构的最高层&#xff0c; 如果用户启用了参数 innodb_file_per_table(在 8.0版本中默认开启) &#xff0c;则每张表都会有一个表空间&#xff08;xxx.ibd&#xff09;&#xff0c;一个 mysql 实…

Scipy 中级教程——插值和拟合

Python Scipy 中级教程&#xff1a;插值和拟合 Scipy 提供了丰富的插值和拟合工具&#xff0c;用于处理实验数据、平滑曲线、构建插值函数等。在本篇博客中&#xff0c;我们将深入介绍 Scipy 中的插值和拟合功能&#xff0c;并通过实例演示如何应用这些工具。 1. 插值 插值是…

可视可交互!在全志H618上用OpenCV读取图像显示到PyQt5窗口上

OpenCV能够处理图像、视频、深度图像等各种类型的视觉数据&#xff0c;在某些情况下&#xff0c;尽管OpenCV可以显示窗口&#xff0c;但PyQt5可能更适合用于创建复杂的交互式应用程序&#xff0c;而自带GPU的H618就成为了这些图像显示的最佳载体。 这里分享一个代码&#xff0…

C语言—文件

C中文件可分为文本文件和二进制文件。 文件指针和FILE 类型 在C语言中&#xff0c;FILE 类型是一个用于表示文件流的结构体类型。这个结构体在标准I/O&#xff08;输入/输出&#xff09;库中定义&#xff0c;尽管其确切的内部结构对程序员是隐藏的&#xff0c;也可能因不同的…

高精度PWM脉宽调制信号转模拟信号隔离变送器1Hz~10KHz转0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA

主要特性: >>精度等级&#xff1a;0.1级。产品出厂前已检验校正&#xff0c;用户可以直接使用 >>辅助电源&#xff1a;8-32V 宽范围供电 >>PWM脉宽调制信号输入: 1Hz~10KHz >>输出标准信号&#xff1a;0-5V/0-10V/1-5V,0-10mA/0-20mA/4-20mA等&…

云联接:揭开SD-WAN神秘面纱,颠覆你对网络的认知!

云联接&#xff08;Cloud Connect&#xff09;源于软件定义广域网&#xff08;SD-WAN&#xff09;。 软件定义广域网由于技术应用性强&#xff0c;近年来从一个由软件定义网络&#xff08;SDN&#xff09;部分衍生的分支概念发展为大规模普适的实践技术&#xff0c;已成为建立…

Detection-friendly dehazing: object detection in real-world hazy scenes

Detection-friendly dehazing: object detection in real-world hazy scenes 摘要 提出了一种联合架构BAD-Net&#xff0c;将去雾模块和检测模块连接成一个端到端的方法。另外&#xff0c;设计了了两个分支结构&#xff0c;用注意力融合模块来充分结合有雾和去雾特征&#xf…

bilibi分类id的秘密

问题 今天想通过rss来阅读bilibili的相关信息&#xff0c;但是如何获取排行榜的分类呢&#xff1f;研究了一下。 办法 浏览器最喜欢的F12&#xff0c;过滤关键才v2?rid,后面的数字就是分类id。 rss获取路径 [最后的数字是0&#xff0c;是所有投稿&#xff0c;数字是1的话是…

陪诊小程序开发|陪诊软件定制|陪诊系统成品功能包含哪些?

陪诊小程序是一种便捷的工具&#xff0c;为用户提供一系列服务和功能&#xff0c;方便患者在就医过程中获得更好的体验和效果。接下来我们将介绍几个主要的陪诊小程序功能。 陪诊小程序开发功能&#xff1a; 一、预约挂号功能。陪诊小程序能够连接用户和医疗机构的系统&#x…