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

相关文章
|
4月前
|
存储 算法 Java
Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性
Java Set因其“无重复”特性在集合框架中独树一帜。本文解析了Set接口及其主要实现类(如HashSet、TreeSet)如何通过特定数据结构和算法确保元素唯一性,并提供了最佳实践建议,包括选择合适的Set实现类和正确实现自定义对象的hashCode()与equals()方法。
78 4
|
8月前
|
存储 Java 索引
JavaSE——集合框架一(6/7)-Set系列集合:LinkedHashSet的底层原理、TreeSet集合(介绍,自定义排序规则,排序示例)
JavaSE——集合框架一(6/7)-Set系列集合:LinkedHashSet的底层原理、TreeSet集合(介绍,自定义排序规则,排序示例)
53 1
|
8月前
|
存储 Java 索引
JavaSE——集合框架二(3/6)-Map系列集合:概述、常用方法(认识Map集合,在什么情形下使用,Map集合体系,Map集合体系的特点)
JavaSE——集合框架二(3/6)-Map系列集合:概述、常用方法(认识Map集合,在什么情形下使用,Map集合体系,Map集合体系的特点)
71 1
|
7月前
|
存储 安全 Java
Java详解 : 单列集合 | 双列集合 | Collections类
Java详解 : 单列集合 | 双列集合 | Collections类
128 0
|
C#
c#集合去重&排序常用方法
list和数组转Hashset跟SortedSet进行排序和去重,以及当Hashset和SortedSet存放的是类时如何进行自定义的排序和去重
113 2
|
存储 安全
集合框架系列(三)之 map双列集合
集合框架系列(三)之 map双列集合
|
存储 Java 程序员
Java集合List介绍和去重方案
Java集合List介绍和去重方案
109 0
|
存储 NoSQL Java
Java开发——25.Map双列集合
集合分类两大类:Collection和Map,前者为单列集合,后者为双列集合,注意他们都是接口。
Java开发——25.Map双列集合
TreeSet的两种排序方式
示例: 示例公用类: public class MyDate { private int month; private int year; private int day; @Override public String toString() { return "MyDate{" + "month=" + month + ", year=" + year +
129 0
|
存储 算法 Java
TreeSet类的排序问题
TreeSet支持两种排序方法:自然排序和定制排序。TreeSet默认采用自然排序。1、自然排序    TreeSet会调用集合元素的compareTo(Object obj)方法来比较元素之间大小关系,然后将集合元素按升序排列,这种方式就是自然排序。
1702 0