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(自然排序) // 添加 5 名员工(其中两名工号相同,测试去重): // E001-张三-12000-技术部 / E002-李四-15000-市场部 // E003-王五-15000-技术部 / E004-赵六-9000-财务部 // E005-刘七-12000-市场部 TreeSet 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 iterator = treeSet.iterator(); while (iterator.hasNext()){ Employee employee = iterator.next(); System.out.println(employee.getId()+"-"+employee.getName()+"-"+employee.getSalary()+"-"+employee.getDept()); } // 3. 临时需求:通讯录按姓名排序 —— 创建 TreeSet 传入按姓名排序的 Comparator // 匿名内部类:o1.getName().compareTo(o2.getName()) // 迭代器遍历输出 treeSet=new TreeSet<>(new Comparator() { @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 } }