首页 > 其他分享 >TreeSet

TreeSet

时间:2023-11-21 19:57:10浏览次数:30  
标签:age Stu add new TreeSet treeset

TreeSet中的元素不可重复,可自动排序。

TreeSet<Integer> treeset = new TreeSet<>();//构建TreeSet

 排序功能演示

public class Main {
    public static void main(String args[]) { 
        TreeSet<Integer> treeset = new TreeSet<>();
        treeset.add(12);
        treeset.add(13);
        treeset.add(1);
        treeset.add(0);
treeset.add(0);//测试TreeSet的元素可重复性 treeset.add(15); Iterator<Integer> it = treeset.iterator(); while(it.hasNext()){ Integer next = it.next(); } for (Integer i:treeset) { System.out.println(i); } } }
输出:
0
1
12
13
15
//输出结果只有一个0

需要注意的是,TreeSet对自定义类型不能进行排序、

class Stu{
    int age ;
    public Stu(int age) {
        this.age = age;
    }
    
}
public class Main {
    public static void main(String args[]) { 
        TreeSet<Stu> trees = new TreeSet<>();
        Stu s1 = new Stu(1);
        Stu s2 = new Stu(2);
        Stu s3 = new Stu(45);
        trees.add(s1);
        trees.add(s2);
        trees.add(s3);

        for (Stu i:trees) {
            System.out.println(i);
        }

    }
}
运行以上代码后出现报错:Stream.Stu cannot be cast to java

此时,我们需要为自定义类实现比较接口Comparable,代码示例:

class Stu implements  Comparable<Stu>{
    int age ;
    public Stu(int age) {
        this.age = age;
    }
    @Override
    public int compareTo(Stu o) {
        if(this.age>o.age) {
            return 1;
        }else if(this.age<o.age) {
            return -1;
        }
        // TODO Auto-generated method stub
        return 0;
    }
    @Override
    public String toString() {
        return "Stu [age=" + age + "]";
    }
    
}
public class Main {
    public static void main(String args[]) { 
        TreeSet<Stu> trees = new TreeSet<>();
        Stu s1 = new Stu(1);
        Stu s2 = new Stu(100);
        Stu s3 = new Stu(50);
        trees.add(s1);
        trees.add(s2);
        trees.add(s3);

        for (Stu i:trees) {
            System.out.println(i);
        }

    }
}
输出:
Stu [age=1]
Stu [age=50]
Stu [age=100]


总结:对于自定义的类型,想要在TreeSet中实现排序,必须实现Comparable接口或者编写Comparator比较器,制定其比较规则!JDK自己提供的数据类型不用程序员实现Comparable接口或者编写Comparator比较器是因为它的底层源码都实现了Comparable接口,具有了比较规则,故可以排序!所以在对自定义类构建TreeSet时要注意自行编写比较方法

 

标签:age,Stu,add,new,TreeSet,treeset
From: https://www.cnblogs.com/kandh/p/17847378.html

相关文章

  • Java中的Set集合之TreeSet
    TreeSet:TreeSet是一个有序集合,它扩展了AbstractSet类并实现了NavigableSet接口。以下是此实现最重要方面的快速摘要:它存储唯一的元素它不保留元素的插入顺序它按升序对元素进行排序它不是线程安全的在该实现中,对象根据其自然顺序以升序排序和存储。该TreeSet中使用的是一......
  • TreeSet
      ......
  • TreeSet
    TreeSet的基本操作放到TreeSet集合中的元素:无序不可重复,但是可以按照元素的大小顺序自动排序(默认升序)//集合的创建TreeSet<Integer>treeSet=newTreeSet<>();//添加元素treeSet.add(1);treeSet.add(10);treeSet.add(199);treeSet.add(41);treeSet.add(0);//遍......
  • Set---SortedSet-NavigableSet-TreeSet
    SortedSet概述A{@linkSet}thatfurtherprovidesa<i>totalordering</i>onitselements.Theelementsareorderedusingtheir{@linkplainComparablenaturalordering},orbya{@linkComparator}typicallyprovidedatsortedsetcreationtime.......
  • JavaSE---SortedSet(TreeSet)
    SortedSet概述A{@linkSet}thatfurtherprovidesatotalorderingonitselements.提供元素排序的set;Theelementsareorderedusingtheir{@linkplainComparablenatural ordering},orbya{@linkComparator}typicallyprovidedatsortedsetcre......
  • 【Java 基础篇】Java TreeSet 详解:红黑树实现的有序集合
    Java集合框架提供了多种数据结构,用于存储和操作数据。其中,TreeSet是一种特殊类型的集合,它通过红黑树(Red-BlackTree)数据结构实现了有序的、唯一元素存储。本篇博客将深入探讨TreeSet,包括其概念、特性、内部实现、使用方法以及示例代码。无论您是初学者还是有一定经验的Java开......
  • LeetCode 7022——熟悉TreeSet数据结构及常用方法的使用
    LeetCode7022.限制条件下元素之间的最小绝对差题目描述:给你一个下标从 0 开始的整数数组 nums 和一个整数 x 。请你找到数组中下标距离至少为 x 的两个元素的 差值绝对值 的 最小值 。换言之,请你找到两个下标 i 和 j ,满足 abs(i-j)>=x 且 abs(nums[i......
  • TreeSet
    TreeSet的使用下面是TreeSet的方法使用,代码实现如下:publicstaticvoidmain(String[]args){ TreeSet<String>set=newTreeSet<>(); //添加元素 set.add("小希"); set.add("小空"); set.add("小丽"); set.add("小光"); //获取元素......
  • 2023年6月11日,TreeSet,Comparable,HashMap
    1.Set1.TreeSetTreeSet1、存储Integer的元素,升序排列2、存储String的元素,字典排列TreeSet根据元素的不同类型使用不同的排序规则publicclasstest01{/***知识点:TreeSet*1、存储Integer的元素,升序排列*2、存储String的元素,字典排列*......
  • Set系列集合:TreeSet集合
                 ......