| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566 |
- package exericse.exericse02;
- import java.util.Comparator;
- import java.util.Iterator;
- import java.util.List;
- import java.util.TreeSet;
- /**
- * @author WanJl
- * @version 1.0
- * @title EmployeeSystem
- * @description
- * @create 2026/8/3
- */
- public class EmployeeSystem {
- public static void main(String[] args) {
- // 1. 创建 TreeSet<Employee>(自然排序)
- // 添加 5 名员工(其中两名工号相同,测试去重):
- // E001-张三-12000-技术部 / E002-李四-15000-市场部
- // E003-王五-15000-技术部 / E004-赵六-9000-财务部
- // E005-刘七-12000-市场部
- TreeSet<Employee> treeSet=new TreeSet<>();
- treeSet.add(new Employee("E001","张三",12000,"技术部"));
- treeSet.add(new Employee("E002","李四",15000,"市场部"));
- treeSet.add(new Employee("E003","王五",15000,"技术部"));
- treeSet.add(new Employee("E004","赵六",9000,"财务部"));
- treeSet.add(new Employee("E005","刘七",12000,"市场部"));
- // 2. 迭代器遍历输出 → 观察:按薪资降序,薪资相同按工号;工号重复的自动去重
- // 输出格式:"E001-张三-12000.0-技术部"
- Iterator<Employee> iterator = treeSet.iterator();
- while (iterator.hasNext()){
- Employee employee = iterator.next();
- System.out.println(employee.getId()+"-"+employee.getName()+"-"+employee.getSalary()+"-"+employee.getDept());
- }
- // 3. 临时需求:通讯录按姓名排序 —— 创建 TreeSet<Employee> 传入按姓名排序的 Comparator
- // 匿名内部类:o1.getName().compareTo(o2.getName())
- // 迭代器遍历输出
- treeSet=new TreeSet<>(new Comparator<Employee>() {
- @Override
- public int compare(Employee o1, Employee o2) {
- return o1.getName().compareTo(o2.getName());
- }
- });
- treeSet.add(new Employee("E001","张三",12000,"技术部"));
- treeSet.add(new Employee("E002","李四",15000,"市场部"));
- treeSet.add(new Employee("E003","王五",15000,"技术部"));
- treeSet.add(new Employee("E004","赵六",9000,"财务部"));
- treeSet.add(new Employee("E005","刘七",12000,"市场部"));
- iterator = treeSet.iterator();
- while (iterator.hasNext()){
- Employee employee = iterator.next();
- System.out.println(employee.getId()+"-"+employee.getName()+"-"+employee.getSalary()+"-"+employee.getDept());
- }
- // 4. 思考:E001-张三(12000) 和 E005-刘七(12000) 薪资相同,为何都能存入?
- // —— compareTo 在薪资相同后继续比较工号,返回值不为 0
- }
- }
|