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-06-26结对编程到底难不难?答案在这里
- 2024-06-19《2023版Java工程师》课程升级公告
- 2024-06-15matplotlib作图不显示3D图,怎么办?
- 2024-06-1503-Loki 日志监控
- 2024-06-1504-让LLM理解知识 -Prompt
- 2024-06-05做软件测试需要懂代码吗?
- 2024-06-0514-ShardingSphere的分布式主键实现
- 2024-06-03为什么以及如何要进行架构设计权衡?
- 2024-05-31全网首发第二弹!软考2024年5月《软件设计师》真题+解析+答案!(11-20题)
- 2024-05-31全网首发!软考2024年5月《软件设计师》真题+解析+答案!(21-30题)