EmployeeSystem.java 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566
  1. package exericse.exericse02;
  2. import java.util.Comparator;
  3. import java.util.Iterator;
  4. import java.util.List;
  5. import java.util.TreeSet;
  6. /**
  7. * @author WanJl
  8. * @version 1.0
  9. * @title EmployeeSystem
  10. * @description
  11. * @create 2026/8/3
  12. */
  13. public class EmployeeSystem {
  14. public static void main(String[] args) {
  15. // 1. 创建 TreeSet<Employee>(自然排序)
  16. // 添加 5 名员工(其中两名工号相同,测试去重):
  17. // E001-张三-12000-技术部 / E002-李四-15000-市场部
  18. // E003-王五-15000-技术部 / E004-赵六-9000-财务部
  19. // E005-刘七-12000-市场部
  20. TreeSet<Employee> treeSet=new TreeSet<>();
  21. treeSet.add(new Employee("E001","张三",12000,"技术部"));
  22. treeSet.add(new Employee("E002","李四",15000,"市场部"));
  23. treeSet.add(new Employee("E003","王五",15000,"技术部"));
  24. treeSet.add(new Employee("E004","赵六",9000,"财务部"));
  25. treeSet.add(new Employee("E005","刘七",12000,"市场部"));
  26. // 2. 迭代器遍历输出 → 观察:按薪资降序,薪资相同按工号;工号重复的自动去重
  27. // 输出格式:"E001-张三-12000.0-技术部"
  28. Iterator<Employee> iterator = treeSet.iterator();
  29. while (iterator.hasNext()){
  30. Employee employee = iterator.next();
  31. System.out.println(employee.getId()+"-"+employee.getName()+"-"+employee.getSalary()+"-"+employee.getDept());
  32. }
  33. // 3. 临时需求:通讯录按姓名排序 —— 创建 TreeSet<Employee> 传入按姓名排序的 Comparator
  34. // 匿名内部类:o1.getName().compareTo(o2.getName())
  35. // 迭代器遍历输出
  36. treeSet=new TreeSet<>(new Comparator<Employee>() {
  37. @Override
  38. public int compare(Employee o1, Employee o2) {
  39. return o1.getName().compareTo(o2.getName());
  40. }
  41. });
  42. treeSet.add(new Employee("E001","张三",12000,"技术部"));
  43. treeSet.add(new Employee("E002","李四",15000,"市场部"));
  44. treeSet.add(new Employee("E003","王五",15000,"技术部"));
  45. treeSet.add(new Employee("E004","赵六",9000,"财务部"));
  46. treeSet.add(new Employee("E005","刘七",12000,"市场部"));
  47. iterator = treeSet.iterator();
  48. while (iterator.hasNext()){
  49. Employee employee = iterator.next();
  50. System.out.println(employee.getId()+"-"+employee.getName()+"-"+employee.getSalary()+"-"+employee.getDept());
  51. }
  52. // 4. 思考:E001-张三(12000) 和 E005-刘七(12000) 薪资相同,为何都能存入?
  53. // —— compareTo 在薪资相同后继续比较工号,返回值不为 0
  54. }
  55. }