ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

4.30Java TreeSet的使用和底层实现

2021-04-30 21:34:45  阅读:200  来源: 互联网

标签:salary Java add Employee return 4.30 id TreeSet


4.30Java TreeSet的使用和底层实现

TreeSet的概念

底层用TreeMap实现,通过key来存储Set的元素

特点:

  • TreeSet内部需要对存储的元素进行排序,对应类需要实现Comparable接口

  • 根据compareTo()方法比较对象的大小,进行内部排序

  • 要排序需要实现comparable接口,实现comparable接口必须重写里面的compareTo方法

定义一个Employee类:

package collection.set;

/*
因为key可以是任意对象,treemap是递增的方式排序
如果key的值为类会如何排序?
新的接口---comparable
*/
/*定义一个新的类*/
public class Employee implements Comparable<Employee>{

   //定义它的属性
   int id;
   String name;
   double salary;
   /*以Employee为key,按照salary排序--->需要实现comparable接口*/

   /*构造器*/
   public Employee(int id, String name, double salary){
       super();
       this.id = id;
       this.name = name;
       this.salary = salary;
  }

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

   /*实现接口当中未实现的方法*/
   @Override
   public int compareTo(Employee o){
       //TODO Auto-generated method stub
       //负数 : 小于, 0 : 等于, 正数 : 大于--->1 -1 0代替
       //比较salary
       if (salary > o.salary){
           //返回值
           return 1;
      }else if (salary < o.salary){
           return -1;
      }else {
           //如果工资相等利用id排序
           if (this.id > o.id){
               return 1;
          }else if (this.id < o.id){
               return -1;
          }else {
               return 0; //相等
          }
      }
  }
}

Test类:

import java.util.TreeSet;

/**
* 测试TreeSet的使用
* @author Lucifer
*/
public class TestTreeSet {
   public static void main(String[] args) {

       //建一个Set对象
       Set<Integer> set = new TreeSet<>();

       set.add(300);
       set.add(200);
       set.add(600);

       //利用增强for循环进行遍历
       for (Integer m : set){
           //遍历集合里面的所有元素然后打印出来
           System.out.println(m);
      }

       /*在创建一个Employee对象*/
       Set<Employee> set2 = new TreeSet<>();
       set2.add(new Employee(100,"Lucifer",20000));
       set2.add(new Employee(50,"Harden",15000));
       set2.add(new Employee(150,"James",10000));

       /*循环添加内容*/
       for (Employee m : set2){
           //打印出结果
           System.out.println(m);
      }
  }
}

 

 

标签:salary,Java,add,Employee,return,4.30,id,TreeSet
来源: https://www.cnblogs.com/JunkingBoy/p/14723387.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有