分析 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 子类进行存储。

相关文章
|
11月前
|
存储 Java 索引
HashMap高频面试题,让你掌握青铜回答与王者级回答,你值得拥有
《HashMap高频面试题,让你掌握青铜回答与王者级回答,你值得拥有》介绍了HashMap的实现原理、数据存储、哈希冲突处理及扩容机制。文章通过对比JDK 1.7和JDK 1.8版本,详细解析了不同版本中的链表与红黑树结构、Entry与Node的区别,以及put()方法的具体实现。特别指出JDK 1.8引入红黑树优化查询性能,并采用尾插法避免多线程环境下的链表环问题。负载因子和扩容机制确保了HashMap在不同场景下的高效运行。
141 2
|
JSON Kubernetes Java
K8S(2)RC、RS和Deployment(上)
K8S(2)RC、RS和Deployment
641 0
|
存储 安全 Java
对于 basis 管理员来说,ABAP Platform 意味着什么
对于 basis 管理员来说,ABAP Platform 意味着什么
376 0
对于 basis 管理员来说,ABAP Platform 意味着什么
|
移动开发 JavaScript HTML5
HTML5的学习之表单元素
HTML5的学习之表单元素 这篇博客我们继续对HTML5进行学习,主要讲解HTML5的表单元素相关的内容。 1.input元素新增的类型 type类型 描述 color 选色板 month 月份 week 周 date 日期 datetime 多数不兼容 datetime-local 日期加时间 time 时间 email 检测邮箱地址 number 数字 range 范围 调节音量 进度条 search 搜索 tel 电话 不支持 url 地址 检测 HTML代码: &lt;form&gt; &lt;input type=&quot;text&quot; autofocus placehol
|
XML 前端开发 Java
最新版JDK15下的JVM类加载器原理详解(上)
最新版JDK15下的JVM类加载器原理详解(上)
255 0
最新版JDK15下的JVM类加载器原理详解(上)
|
弹性计算 人工智能 运维
高校学生参加飞天加速计划
linux与服阿里云服务器ECS, 阿里云服务器为提供了强大云计算能力。并且平台有很多开发者的使用教程,让我们新手也能很快上手去开发一些网站,希望更多的学生能够加入到阿里云,学习+实战让自己变得更强。
|
算法 UED
设计师如何玩数据
本文主要从为什么要做MERIDIAN开始讲起,接下来分析了面对云产品售卖过程中设计师的复杂思考,包括核心算法的改变等,接着还介绍了微观力量,并解释了 Markov Chain Model,最后畅想了售卖线的诗和远方。
652 0
|
存储 Web App开发 前端开发