1. <output id="xofhe"></output>

      <menuitem id="xofhe"></menuitem>
      当前位置: 首页 / 技术分享 / 正文
      TreeSet集合

      2022-12-15

      treeset 方法 student ts 集合

        TreeSet集合

        HashSet集合存储的元素是无序的和不可重复的,为了对集合中的元素进行排序,Set接口提供了另一个可以对HashSet集合中元素进行排序的类——TreeSet。

        接下来通过一个案例演示TreeSet集合的用法。

      Java
      import java.util.TreeSet;

      public class demo11 {
          public static void main(String[] args) {
              TreeSet ts = new TreeSet();
              ts.add(3);
              ts.add(1);
              ts.add(1);
              ts.add(2);
              ts.add(3);
              System.out.println(ts);
          }
      }

        上述代码中,从打印结果可以看出,添加的元素已经自动排序,并且重复存入的整数1和3只添加了一次。

        TreeSet集合之所以可以对添加的元素进行排序,是因为元素的类可以实现Comparable接口 (基本类型的包装类,String类都实现了该接口),Comparable接口强行对实现它的每个类的对象进行整体排序,这种排序被称为类的自然排序。Comparable接口的compareTo()方法被称为自然比较方法。如果将自定义的Student对象存入TreeSet,TreeSet将不会对添加的元素进行排序,Student对象必须实现Comparable接口并重写compareTo()方法实现对象元素的顺序存取。

        接下来通过一个案例讲解使用compareTo()方法实现对象元素的顺序存取。  

      Java
      import java.util.TreeSet;

      class Student implements Comparable<Student> {
          private String id;
          private String name;

          public Student(String id, String name) {
              this.id = id;
              this.name = name;
          }

          // 重写toString()方法
          @Override
          public String toString() {
              return id + ":" + name;
          }

          @Override
          public int compareTo(Student o) {
              // return 0; // 集合中只有一个元素
              // return 1; // 集合按照怎么存就怎么取
              return -1; // 集合按照存入顺序倒过来进行存储
          }
      }

      public class Example12 {
          public static void main(String[] args) {
              TreeSet ts = new TreeSet();
              ts.add(new Student("1", "张三"));
              ts.add(new Student("2", "李四"));
              ts.add(new Student("3", "王五"));
              System.out.println(ts);
          }
      }

        从运行结果可以看出,TreeSet按照存入元素的顺序倒过来存入了集合中,因为Student类实现了Comparable接口,并重写了compareTo()方法,当compareTo()方法返回0的时候集合中只有一个元素;当compareTo()方法返回正数的时候集合会正常存取;当compareTo()方法返回负数的时候集合会倒序存储。

        上面介绍了TreeSet集合的自然排序,它还有另一种实现排序的方式,即实现Comparator接口,重写compare()方法和equals()方法,但是由于所有的类默认继承Object,而Object中有equals()方法,所以自定义比较器类时,不用重写equals()方法,只需要重写compare()方法,这种排序被称为比较器排序。

        接下来通过一个案例学习将自定义的Student对象通过比较器的方式存入TreeSet集合。  

      Java
      package com.cy.demo13;
      import java.util.Comparator;
      import java.util.TreeSet;

      class Student {
          private String id;
          private String name;

          public Student(String id, String name) {
              this.id = id;
              this.name = name;
          }

          // 重写toString()方法
          @Override
          public String toString() {
              return id + ":" + name;
          }
      }
      public class Example13 {
          public static void main(String[] args) {
              TreeSet ts = new TreeSet(new Comparator() {
                  @Override
                  public int compare(Object o1. Object o2) {
                      return -1;
                  }
              });
              ts.add(new Student("1", "张三"));
              ts.add(new Student("2", "李四"));
              ts.add(new Student("3", "王五"));
              System.out.println(ts);
          }
      }

      分享: 更多

      上一篇:Set接口简介

      下一篇:Map接口与HashMap集合

      好程序员公众号

      • · 剖析行业发展趋势
      • · 汇聚企业项目源码

      好程序员开班动态

      More+
      • HTML5大前端 <高端班>

        开班时间:2021-04-12(深圳)

        开班盛况

        开班时间:2021-05-17(北京)

        开班盛况
      • 大数据+人工智能 <高端班>

        开班时间:2021-03-22(杭州)

        开班盛况

        开班时间:2021-04-26(北京)

        开班盛况
      • JavaEE分布式开发 <高端班>

        开班时间:2021-05-10(北京)

        开班盛况

        开班时间:2021-02-22(北京)

        开班盛况
      • Python人工智能+数据分析 <高端班>

        开班时间:2021-07-12(北京)

        预约报名

        开班时间:2020-09-21(上海)

        开班盛况
      • 云计算开发 <高端班>

        开班时间:2021-07-12(北京)

        预约报名

        开班时间:2019-07-22(北京)

        开班盛况
      IT培训IT培训
      在线咨询
      IT培训IT培训
      试听
      IT培训IT培训
      入学教程
      IT培训IT培训
      立即报名
      IT培训

      Copyright 2011-2023 北京千锋互联科技有限公司 .All Right 京ICP备12003911号-5 京公网安备 11010802035720号

      成熟妓女BBw
        1. <output id="xofhe"></output>

          <menuitem id="xofhe"></menuitem>