【TreeSet集合】自然排序Comparator的使用

news2024/11/20 3:37:40

自然排序Comparator的使用

  • 存储学生对象并遍历,创建TreeSet集合使用无参构造方法

  • 要求:按照年龄从小到大排序,年龄相同时,按照姓名的字母顺序排序

    创建学生类:

    package com.gather.set.treeset;
    public class Student implements Comparable<Student>{
        private String name;
        private int age;
        public Student() {
        }
        public Student(String name, int age) {
            this.name = name;
            this.age = age;
        }
    
        public String getName() {
            return name;
        }
    
        public void setName(String name) {
            this.name = name;
        }
    
        public int getAge() {
            return age;
        }
    
        public void setAge(int age) {
            this.age = age;
        }
        @Override
        public int compareTo(Student s) {
            /*//return 0;重复元素
            //return 1;正数,升序存储
            return -1;//负数,降序存储*/
            //按照年龄从小到大排序
            int num = this.age - s.age();//升序
            //年龄相同时,按照姓名的字母顺序排序
            int num2 = num == 0 ? this.name.compareTo(s.name) : num;
            return num2;
        }
    }
    

​ 测试类:

package com.gather.set.treeset;
import java.util.TreeSet;
public class TreeSetDemo02 {
 public static void main(String[] args) {
     TreeSet<Student> ts = new TreeSet<Student>();
     Student s1 = new Student("xishi", 29);
     Student s2 = new Student("wangzhaojun", 28);
     Student s3 = new Student("diaochan", 30);
     Student s4 = new Student("yangyuhuan", 33);
     Student s5 = new Student("lisi", 33);
     ts.add(s1);
     ts.add(s2);
     ts.add(s3);
     ts.add(s4);
     ts.add(s5);
     //遍历
     for (Student s : ts) {
         System.out.println(s.getName() + "," + s.getAge());
     }
 }
}

在这里插入图片描述

自然排序要求自定义实现java.lang.Comparable接口并且重写ComparaTo()方法,按要求使用ComparaTo()进行比较。

要求年龄从小到大排序,比较年龄的大小当返回值为0时,表明学生的年龄是相同的,当年龄相同时接着按照姓名的字母顺序进行排序;当返回值为1时,就会进行升序存储即从低到高的顺序;当 返回值为-1时,就会降序存储即从高到低的顺序。

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

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

相关文章

【利用AI让知识体系化】前端开发学习了解业务架构

文章目录 I. 前端技术入门1.1 HTML/CSS/Javascript 简介1.2 前端框架 React/Vue/Angular 了解1.3 前端工具 Git/Webpack/npm/yarn 的使用1.4 前端调试和性能优化技巧 II. 开发综合应用2.1 工程化开发的全流程2.2 单页面应用 (SPA)2.3 数据交互和批量操作2.4 模块化和组件化开发…

压缩感知重构之匹配追踪算法

算法的重构是压缩感知中重要的一步&#xff0c;是压缩感知的关键之处。因为重构算法关系着信号能否精确重建&#xff0c;国内外的研究学者致力于压缩感知的信号重建&#xff0c;并且取得了很大的进展&#xff0c;提出了很多的重构算法&#xff0c;每种算法都各有自己的优缺点&a…

[golang 微服务] 4. gRPC介绍,Protobuf结合gRPC 创建微服务

一.gRPC框架的介绍 简介 gRPC是一个 高性能、 开源和 通用的 RPC 框架&#xff0c; 面向移动端和 HTTP/2 设计,目前提供 C、Java 和 Go语言版本&#xff0c;分别是&#xff1a;grpc, grpc-java, grpc-go,其中 C 版本支持 C, C, Node.js, Python, Ruby, Objective-C, PHP 和 C# …

Windows Pyqt5配置环境过程(pycharm Anaconda)

必要安装 Anaconda下载地址 Pycharm下载地址 这两个推荐2019年左右的版本就行了&#xff0c;安装的时候选择“add path” Anaconda换源 换源之后叉掉终端之后再创建环境 Anaconda常用命令 Anaconda换源应该是只对conda install 有用&#xff0c;pip还要换源 使用清华源进行…

java-集合

java-集合 一、集合体系结构 集合类的特点 ​ 提供一种存储空间可变的存储模型&#xff0c;存储的数据容量可以随时发生改变 集合类的体系图 ​ 二、单列集合 2.1 Collection集合&#xff08;接口&#xff09; Collection集合概述 是单列集合的顶层接口&#xff0c;它表示一…

汇编栈寄存器SS与SP使用

入栈时,栈段地址与偏移地址计算 使用a命令输入下面汇编,然后使用u命令查看 写入汇编指令到内存 修改CS:IP指向当前代码段 使用t命令执行汇编指令,详细执行如下图标号 注意每行指令执行后寄存器变化. 取内存段单元数据 将内存段单元数据送入寄存器, 多次送入数据到同一寄存…

chatgpt赋能python:Python分词处理的重要性

Python分词处理的重要性 随着互联网的飞速发展&#xff0c;大数据的普及与应用越来越广泛。人们需要从海量的数据中找到自己需要的信息。因此&#xff0c;自然语言处理技术被广泛应用&#xff0c;其中分词技术是自然语言处理中最基础的一项技术。 在这个领域中&#xff0c;Py…

JS逆向——借助playwright实现逆向

原理&#xff1a; 1.修改js文件&#xff0c;将加密方法设定为全局变量并调用。 2.使用playwright替换浏览器加载的js文件 3.在python中通过playwright实现js注入获取加密结果 实现&#xff1a; 以下面链接为例&#xff1a; Scrape | Movie 1.首先&#xff0c;要知道页面…

方法引用相关知识点

这里写目录标题 方法引用方法引用符简介代码演示 Lambda表达式支持的方法引用引用 类方法简介使用 引用对象的实例方法简介操作 引用类的实例方法简介具体代码 引用构造器简介代码演示 二级目录二级目录二级目录二级目录二级目录二级目录 方法引用 方法引用符 简介 注意 这里…

JDK SPI、Spring SPI、Dubbo SPI三种机制的细节与演化

JDK SPI、Spring SPI、Dubbo SPI三种机制的细节与演化 SPI机制 SPI机制的应用 JDBC中加载驱动 Spring SPI Dubbo SPI SPI深入理解 API与SPI的区别 ServiceLoader JDK SPI、Spring SPI、Dubbo SPI综合对比 SPI机制 Java SPI&#xff08;Service Provider Interface&am…

Linux4.3Apache配置与应用

文章目录 计算机系统5G云计算第一章 LINUX Apache配置与应用及网页优化一、构建虚拟 Web 主机二、基于域名的虚拟主机1.为虚拟主机提供域名解析2.为虚拟主机准备网页文档3.添加虚拟主机配置4.设置访问控制5.Options指令解释6.AllowOverride指令解释7.地址限制策略8.加载独立的配…

10个Chatgpt国内可用镜像网页

自 2022 年底推出以来&#xff0c; ChatGPT一直风靡全球&#xff0c;原因显而易见。革命性的聊天机器人 AI 可以完成数量惊人的任务&#xff0c;从进行对话到撰写整篇学期论文。此外&#xff0c;ChatGPT 可以做很多您不知道的事情——从制作品牌徽标到创作音乐等等。 根据Open…

浮点数在内存中的储存(C语言)

浮点数在内存中的储存 一、浮点数简介二、浮点数在内存中的储存1.IEEE 754标准2.单精度浮点数的内存储存3.双精度浮点数的内存储存4.IEEE 754对有效数字M和指数E&#xff0c;还有一些特别规定 三、总结 一、浮点数简介 浮点数是计算机科学中的一种数据类型&#xff0c;用于存储…

2023第四届中国奢侈品数字化创新峰会

2023第四届中国奢侈品数字化创新峰会将于6月26日-27日在上海召开。 此次会议将线上线下同步举行&#xff0c;重点讨论后疫情时代奢侈品行业主要的数字化战略与趋势&#xff0c;探讨数字化技术如何成为与消费者沟通的有效手段和关键媒介&#xff0c;如何做好线上消费者洞察&…

【HashSet集合】概述和特点

HashSet集合概述和特点 1.HashSet概述 HashSet在java.util包下&#xff0c;使用时需要到爆&#xff0c;它是set接口的一个实现类&#xff0c;它所存储的元素是不可重复的&#xff0c;并且元素都是无序的&#xff0c;HashSet是根据对象的哈希值来确定元素在集合中的存储位置&a…

代码随想录第48天

1.打家劫舍&#xff1a; 动规五部曲分析如下&#xff1a; 确定dp数组&#xff08;dp table&#xff09;以及下标的含义 dp[i]&#xff1a;考虑下标i&#xff08;包括i&#xff09;以内的房屋&#xff0c;最多可以偷窃的金额为dp[i]。 2.确定递推公式 决定dp[i]的因素就是第…

chatgpt赋能python:Python分词方法——NLP技术的重要组成部分

Python分词方法——NLP技术的重要组成部分 自然语言处理&#xff08;NLP&#xff09;是人工智能领域的热点研究方向之一。而分词作为NLP技术的重要组成部分&#xff0c;对于中文文本的处理尤为重要。Python作为一种便捷、易学、高效的编程语言&#xff0c;拥有丰富的分词工具。…

陪诊系统开发|陪诊小程序源码|陪诊小程序源码开发

随着互联网的发展&#xff0c;人们对于医疗服务的需求越来越高&#xff0c;而移动互联网的普及也让医疗服务得以更加便捷高效地提供给用户。陪诊小程序是一款为顾客提供陪诊服务的应用程序&#xff0c;可以帮助患者更好地接受医疗服务&#xff0c;同时也为医疗服务的提供者带来…

【Collection集合的遍历】

Collection集合的遍历 Iterator&#xff1a;迭代器是集合的专用的遍历的方式&#xff0c;使用时也需要导包 Iterator iterator()&#xff1a;返回集合中元素的迭代器&#xff0c;通过集合的iterator()方法得到迭代器使用过集合的iterator()方法得到的&#xff0c;所以说它是依…

压缩感知重构之分段弱正交匹配追踪法

算法的重构是压缩感知中重要的一步&#xff0c;是压缩感知的关键之处。因为重构算法关系着信号能否精确重建&#xff0c;国内外的研究学者致力于压缩感知的信号重建&#xff0c;并且取得了很大的进展&#xff0c;提出了很多的重构算法&#xff0c;每种算法都各有自己的优缺点&a…