首页 > 其他分享 >TreeSet

TreeSet

时间:2024-08-17 16:48:24浏览次数:9  
标签:name add User new TreeSet id treeSet

import lombok.*;
import org.junit.jupiter.api.Test;

import java.util.*;

/*
Comparable是对象自身的比较方式,而Comparator是外部定义的比较方式。
* */
public class T {

    //Comparator外部比较器 User实体可以和Comparator解耦
    @Test
    public void comparatorTest() {
        TreeSet<User> treeSet = new TreeSet<>(new Comparator<User>() {
            @Override
            public int compare(User o1, User o2) {
                if (o1.id == o2.id) {
                    //name升序
                    return o1.name.compareTo(o2.name);
                }
                return o2.id - o1.id;//id降序
            }
        });
        treeSet.add(User.builder().id(2).name("xixi").build());
        treeSet.add(User.builder().id(5).name("haha").build());
        treeSet.add(User.builder().id(8).name("xz").build());
        treeSet.add(User.builder().id(2).name("hello").build());

        treeSet.forEach(System.out::println);
    }

    @Test
    public void comparableTest() {
        TreeSet<User2> treeSet = new TreeSet<>();
        treeSet.add(new User2(2));
        treeSet.add(new User2(1));
        treeSet.add(new User2(5));
        treeSet.add(new User2(3));

        treeSet.forEach(System.out::println);
    }

}

@Builder
@Data
class User {
    int id;
    String name;
}

/*
Comparable 内部比较器
* */
@AllArgsConstructor
@Data
class User2 implements Comparable<User2> {
    int id;

    @Override
    public int compareTo(User2 o) {
        return this.id - o.id;
    }
}

标签:name,add,User,new,TreeSet,id,treeSet
From: https://www.cnblogs.com/goodluckxiaotuanzi/p/18364617

相关文章

  • 【数据结构】TreeMap和TreeSet
    目录前言TreeMap实现的接口内部类常用方法TreeSet实现的接口常用方法前言Map和set是一种专门用来进行搜索的容器或者数据结构,其搜索的效率与其具体的实例化子类有关。一般把搜索的数据称为关键字(Key),和关键字对应的称为值(Value),将其称之为Key-value的键值对。......
  • Java集合:Collection and Map;ArrayList;LinkList;HashSet;TreeSet;HashMap;TreeMap;Iterator:
        集合介绍:                        是一组变量类型(容器),跟数组很像。一,引用集合的原因(必要性):                  A:数组的空间长度固定,一旦确定不可以更改。多了浪费,少了报错。          B:使用数......
  • 13-TreeSet和TreeMap基本介绍
    13-TreeSet和TreeMap基本介绍介绍汇总:TreeSet基本介绍TreeMap基本介绍1-TreeSet基本介绍TreeSet类用于存储一组对象,并将对象按照自然规则(实现Comparator接口的)或者指定Comparator对象的比较器进行排序。TreeSet类中的底层是TreeMap。key值不可以为null,也不......
  • 梳理TreeSet
    具有对所存储元素进行排序在TreeSet集合中存储,String,Integer,Double这三个类都去实现了一个comparable接口jdk提供了一种包装类都默认实现了java,lang.comparable接口(自带自然排序)在TreeSet集合中存储,自定义类型//程序员自己定义的就必须保证自定义类型,有实现java,lan......
  • TreeSet排序规则
    自然排序Comparable的使用使用空参构造方法创建TreeSet集合自定义的Student类实现Comparable接口,接口对他实现的每一个类创建了一个接口packagealgorithm.set;importjava.util.HashSet;/***@authorxiaowang*@creat2024/6/723:05*@DescriptionJavaLotus......
  • JDK源码分析-TreeSet
    概述TreeSet是Java集合框架中用于存储唯一元素的树形数据结构,它实现了NavigableSet接口,这意味着TreeSet中的元素不仅是有序的,还支持一系列的导航方法。TreeSet的内部实现主要依赖于TreeMap,通过TreeMap的键来维护元素的排序。 类图从以上类图可以看到,TreeSet实现了三个接口,......
  • TreeSet自定义对象compareTo(Object o)方法
    java小白,最近学到TreeSet,我们都知道在存储自定义对象时,需要使用Comparable或使用Comparator存储。刚刚碰到这样一段代码。publicclassPersonimplementsComparable{intage;Stringname;Person(intage,Stringname){this.age=age;th......
  • 【容器源码篇】Set容器(HashSet,LinkedHashSet,TreeSet的特点)
    文章目录⭐容器继承关系......
  • Java集合篇之set,面试官:请说一说HashSet、LinkedHashSet、TreeSet的区别?
    写在开头Java的集合世界中主要由List,Set,Queue,Map构成,我们在之前的博文中已经学习了List,接下来我们继续学习Set集合。Set特点:存取无序,不可以存放重复的元素,不可以用下标对元素进行操作HashSet作为Set容器的代表子类,HashSet经常被用到,我们通过源码去分析它【源码查看】public......
  • Java 中的属性类Properties 以及TreeSet和TreeMap
    属性类Propertiesimportjava.util.Properties;/**目前只需要掌握Properties属性类对象的相关方法即可*Properties是一个Map集合,继承Hashtable,Properties的key和value都是String类型*Properties被称为属性类对象*Properties是线程安全的**/publicclassProperties......