TreeSet排序相关总结

java的集合这一块在工作中用得还比较多,有些东西老是忘,因此在此记录下来。

TreeSet原理

1.特点
    • TreeSet是用来排序的, 可以指定一个顺序, 对象存入之后会按照指定的顺序排列
2.使用方式
  • a.自然顺序(Comparable)
    • TreeSet类的add()方法中会把存入的对象提升为Comparable类型
    • 调用对象的compareTo()方法和集合中的对象比较(当前存入的是谁,谁就会调用compareTo方法)
    • 根据compareTo()方法返回的结果进行存储
  • b.比较器顺序(Comparator)
    • 创建TreeSet的时候可以制定 一个Comparator
    • 如果传入了Comparator的子类对象, 那么TreeSet就会按照比较器中的顺序排序
    • add()方法内部会自动调用Comparator接口中compare()方法排序
    • 调用的对象(就是当前存入的对象)是compare方法的第一个参数,集合中的对象(已经添加进去的对象)是compare方法的第二个参数
  • c.两种方式的区别
    • TreeSet构造函数什么都不传, 默认按照类中Comparable的顺序(没有就报错ClassCastException)
    • TreeSet如果传入Comparator, 就优先按照Comparator
时间: 2024-07-29 00:55:28

TreeSet排序相关总结的相关文章

TreeSet排序,存储自己定义对象,自己定义比較器演示样例

Set:无序.不能够反复元素. |--HashSet:数据结构是哈希表.线程是非同步的. 保证元素唯一性的原理:推断元素的hashCode值是否同样. 假设同样,还会继续推断元素的equals方法.是否为true. |--TreeSet:能够对Set集合中的元素进行排序. 底层数据结构是二叉树. 保证元素唯一性的根据:compareTo方法return 0. TreeSet排序的第一种方式:让元素自身具备比較性. 元素须要实现Comparable接口,覆盖compareTo方法. 也种方式也成为

TreeSet排序树

TreeSet中的对象是按照大小进行排序的,因此,TreeSet中的对象必须是可以比较大小的. ①可以通过TreeSet中的对象继承Comparable接口 ②通过外部裁判来对对象进行大小裁定 根据自定义比较器的规则,当比较的对象相同,则认为是内容上或逻辑上相同的元素,就不会把他们加进来. 方式1:实现Comparable接口 package cn.cqu.huang; import java.util.Set; import java.util.TreeSet; class Student i

TreeSet排序,存储自定义对象,自定义比较器示例

Set:无序,不可以重复元素. |--HashSet:数据结构是哈希表.线程是非同步的. 保证元素唯一性的原理:判断元素的hashCode值是否相同. 如果相同,还会继续判断元素的equals方法,是否为true. |--TreeSet:可以对Set集合中的元素进行排序. 底层数据结构是二叉树. 保证元素唯一性的依据:compareTo方法return 0. TreeSet排序的第一种方式:让元素自身具备比较性. 元素需要实现Comparable接口,覆盖compareTo方法. 也种方式也成为

TERSUS画画一样开发软件 集合类元件介绍-对象排序相关元件

TERSUS无代码手机电脑管理类软件开发,其中对象排序相关元件包括:数字序列(Range)元件.排序(Sort)元件.去重(Unique Items)元件 数字序列(Range)元件:是创建一个包含指定范围的数组,创建出一个整数列表,和有代码开发一样,一般是用在循环中的,比如需要重复运算15次,就用这个来创建15个数字序列: 排序(Sort)元件:是将对象进行排序的一个元件,可以指定排序的依据,是按对象中哪一个字段或名称的对象进行处理: 去重(Unique Items)元件:是将一组对象中的重复

【java】用HashMap计数,用TreeSet排序

1 package com.tn.hashMap; 2 3 import java.util.HashMap; 4 import java.util.TreeSet; 5 6 public class HashMapDemo { 7 public static void main(String[] args){ 8 9 String str="eeeeaccbbddddffffff"; 10 HashMap<String,Integer> hashMap=new HashM

TreeSet排序

TreeSet的排序能够通过两种方法来实现: 1.通过TreeSet(Comparator<? super E> comparator) 构造方法指定TreeSet的比較器进行排序. 2.使用TreeSet()构造方法.并对须要加入到set集合中的元素实现Comparable接口进行排序: 方法一样例: person类: public class Person { private String name; private int age; private String date; public

数据结构——排序相关问题

对任意n个关键字排序的比较次数至少为log2(n!). 1.对任意的7个关键字进行基于比较的排序,至少要进行13次关键字之间的两两比较. 一.直接插入排序 基本思想 每步将一个待排序的记录,按其顺序码大小插入到前面已经排序的字序列的合适位置,直到全部插入排序完为止.直接插入排序的时间复杂度为O(n^2);空间复杂度为O(1). 代码实现 class SortTest { public static void main(String[] args) { int arr[]={8,6,2,3,7,4

TreeSet和Comparator 对TreeSet排序

使用TreeSet和Comparator,编写TreeSetTestInner类,要求对TreeSet中的元素"HashSet"."ArrayList"."TreeMap"."HashMap"."TreeSet"."LinkedList"进行升序和倒序排列,并使用匿名内部类和静态内部类分别实现. 方法一: 静态内部类 import java.util.*; public class Tr

TreeSet 排序

1 class Person1 implements Comparable <Person1>{ 2 private Float height; 3 private String name; 4 5 Person1(float height) 6 { 7 this.height=height; 8 } 9 10 public Float getHeight() { 11 return height; 12 } 13 14 public void setHeight(float height)