分析 Treeset 子类排序操作|学习笔记-阿里云开发者社区

开发者社区> 学堂小助手> 正文

分析 Treeset 子类排序操作|学习笔记

简介: 快速学习分析 Treeset 子类排序操作
+关注继续查看

开发者学堂课程【Java 高级编程分析 Treeset 子类排序操作】学习笔记,与课程紧密联系,让用户快速学习知识。

课程地址:https://developer.aliyun.com/learning/course/20/detail/409


TreeSet排序说明


经过分析之后 TreeSet 子类之中保存的数据是允许排序的,但是这个类必须要实现Comparable 接口,只要实现了此接口才够确认出对象的大小关系。

提示:TreeSet 本质是利用 TreeMap 子类实现的集合数据的存储,而 TreeMap 就需要根据 Comparable 来确定大小好关系。

那么下面就使用一个自定义的类来实现排序的处理操作.

范例:实现自定义类排序

Package cn.mldn.demo;​​

import java.util.Set;

Import java.util.TreeSet;

Class Person implements Comparable <Peson>{ // 比较器

private String name;

Private int age;

Public Person(String name,int age){

This.name = name;

This.age = age;

}

public String toString (){

return “姓名,"+ this . name +"、年龄:"+ this . age ;

}

@Override

public int compareTo ( Person per ){

if(this . age < per . age ){

return -1;

} else if ( this . age > per . age ){

return 1;

} else {

return this . name . compareTo ( per . name );

}

}

}

pub1ic class JavaAPIDemo {

public static void main ( String [] args ) throws Exception{

Set < Person >al1= new TreeSet < Person >();/为 List 父接口进行实例化al1.add( new Person ("张三",19));

all . add ( new Person ("李四",19));//年齡相同,但是姓名不同

all . add ( new Person ("王五”,20));//数据重复

a11.add( new Person ("王五",20));//数据重复

a11.add( new Person ("小小强”,78));

all.forEach(System.out::println);

在使用自定义类对象进行比较处理的时候一定要将该类之中的所有属性都依次进行大小关系的匹配,否则如果某一个或某几个属性相同的时候它也会认为是重复数据,所以 TreeSet 是利用了 Comparable 接口来确认重复数据的。

由于 TreeSet 在操作过程之中需要将类中的所有属性进行比对,这样的实现难度太高了,那么在实际的开发之中应该首选 HashSet 子类进行存储。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
排名前 16 的 Java 工具类,哪个你没用过?
在Java中,实用程序类是定义一组执行通用功能的方法的类。 这篇文章展示了最常用的Java实用工具类及其最常用的方法。类列表及其方法列表均按受欢迎程度排序。数据基于从GitHub随机选择的50,000个开源Java项目。 希望您可以通过浏览列表来了解
8 0
PO,VO,DAO,BO,POJO 之间的区别你懂吗?
value object:值对象。 通常用于业务层之间的数据传递,由new创建,由GC回收。
6 0
第一个 Java 程序|学习笔记
快速学习 第一个 Java 程序
7 0
方法的定义与使用(方法递归调用)|学习笔记
快速学习 方法的定义与使用(方法递归调用)
11 0
方法的定义与使用(方法重载)|学习笔记
快速学习 方法的定义与使用(方法重载)
8 0
10S
冬季实战营第一期:从零到一上手玩转云服务器的学习报告
训练营日期:2022年1月17日 - 2022年1月23日,通过前五日从零学习云服务器,还能领取限量版盲盒等奖品
8 0
解决Java- 错误: 找不到或无法加载主类 HelloWorld.java
针对初学者使用javac,java等命令编译class文件时出现的经典问题,提供解决思路和方法。
14 0
C# 同步 异步 回调 状态机 async await Demo
C# 同步 异步 回调 状态机 async await Demo 我们项目的客户端和服务端通信用的是WCF,我就想,能不能用异步的方式调用WCF服务呢?或者说能不能用async await的方式调用WCF服务呢?
4 0
“冬季实战营第一期”之从零到一上手玩转云服务器——学习报告
动手实战、专家带练。由浅及深,逐渐提升动手实操能力。
24 0
1214
文章
0
问答
来源圈子
更多
技术图谱:由专家组参与技术图谱的绘制与编写,知识与实践的结合让开发者们掌握学习路线与逻辑,快速提升技能 电子书:电子书由阿里内外专家打造,供开发者们下载学习,更与课程相结合,使用户更易理解掌握课程内容 训练营:学习训练营 深入浅出,专家授课,带领开发者们快速上云 精品课程:汇集知识碎片,解决技术难题,体系化学习场景,深入浅出,易于理解 技能自测:提供免费测试,摸底自查 体验实验室:学完即练,云资源免费使用
+ 订阅
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载