image.png

    1. public class TreeSetTest {
    2. /*
    3. 1.向TreeSet中添加的数据,要求是相同类的对象。
    4. 2.两种排序方式:自然排序(实现comparable接口) 和 定制排序(实现compare)
    5. 3.自然排序中,比较两个对象是否相同的标准为:compareTo()返回0,不再时equals();
    6. 4.定制排序中,比较两个对象是否相同的标准为:compare()返回0,不再是equals();
    7. */
    8. @Test
    9. public void test1() {
    10. TreeSet set = new TreeSet();
    11. //失败:不能添加不同类的对象
    12. // set.add(123);
    13. // set.add(456);
    14. // set.add("AA");
    15. // set.add(new User("Tom",20));
    16. //举例一
    17. // set.add(34);
    18. // set.add(-34);
    19. // set.add(43);
    20. // set.add(11);
    21. // set.add(8);
    22. //举例二:
    23. set.add(new User("Tom", 12));
    24. set.add(new User("Jerry", 32));
    25. set.add(new User("Jim", 2));
    26. set.add(new User("Mike", 65));
    27. set.add(new User("Jack", 33));
    28. Iterator iterator = set.iterator();
    29. while (iterator.hasNext()) {
    30. System.out.println(iterator.next());
    31. }
    32. }
    33. @Test
    34. public void test2() {
    35. Comparator com = new Comparator() {
    36. //按照年龄从小到大排序
    37. @Override
    38. public int compare(Object o1, Object o2) {
    39. if(o1 instanceof User && o2 instanceof User){
    40. User u1 = (User)o1;
    41. User u2 = (User)o2;
    42. return Integer.compare(u1.getAge(),u2.getAge());
    43. }else {
    44. throw new RuntimeException("输入的数据类型不匹配");
    45. }
    46. }
    47. };
    48. TreeSet set = new TreeSet(com);
    49. set.add(new User("Tom", 12));
    50. set.add(new User("Jerry", 32));
    51. set.add(new User("Jim", 2));
    52. set.add(new User("Mike", 65));
    53. set.add(new User("Jack", 33));
    54. Iterator iterator = set.iterator();
    55. while (iterator.hasNext()) {
    56. System.out.println(iterator.next());
    57. }
    58. }
    59. }