4.30Java TreeSet的使用和底层实现
2021/4/30 22:25:42
本文主要是介绍4.30Java 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); } } }
这篇关于4.30Java TreeSet的使用和底层实现的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-25Springboot应用的多环境打包项目实战
- 2024-11-25SpringBoot应用的生产发布项目实战入门教程
- 2024-11-25Viite多环境配置项目实战:新手入门教程
- 2024-11-25Vite多环境配置项目实战入门教程
- 2024-11-25Springboot应用的生产发布资料:新手入门教程
- 2024-11-25创建springboot项目资料:新手入门教程
- 2024-11-25创建Springboot项目资料:新手入门教程
- 2024-11-25JAVA创业资料:初学者必备的JAVA创业指南
- 2024-11-25Java创业资料:新手入门必备Java编程教程与创业指南
- 2024-11-25JAVA语音识别项目项目实战入门教程