• 集合框架


    集合框架整理

    TreeMap和TreeSet的底层由于使用的是二叉树,所以不能保证是存取有序的,但是他们却有着自然顺序,而且这种自然顺序是可以进行自定义的,通过实现比较器接口即可达到目的,如根据我们指定的一个属性值进行排序

    案例如下

    实体类

    class User {
        String name;
        int age;
    
        public User(String name, int age) {
            this.name = name;
            this.age = age;
        }
    }

    测试方法

    @org.junit.Test
        public void test1() {
           User user1 = new User("小o",45);
           User user2 = new User("小a",456);
           User user3 = new User("小b",5);
           User user4 = new User("小c",48);
           User user5 = new User("小d",8695);
           User user6 = new User("小e",475);
           User user7 = new User("小f",546);
           User user8 = new User("小g",405);
    
            TreeMap<User,String> treeMap = new TreeMap(new Comparator<User>() {
                @Override
                public int compare(User user1, User user2) {
                    if (user1.age > user2.age) {
                        return 1;
                    } else if (user1.age == user2.age) {
                        return 0;
                    } else   {
                        return -1;
                    }
                }
            });
            treeMap.put(user1,"1");
            treeMap.put(user2,"2");
            treeMap.put(user3,"3");
            treeMap.put(user4,"4");
            treeMap.put(user5,"5");
            treeMap.put(user6,"6");
            treeMap.put(user7,"7");
            Set<User> users = treeMap.keySet();
            for (User user : users) {
                System.out.println(user.age);
            }
        }

    输出结果

    5
    45
    48
    456
    475
    546
    8695

    在比较器中的compare中,第二个参数是当前要插入的结点点,第一个参数是当前树要插入结点的上一个结点,返回负数则表示当前结点放在树的左子树中,返回0或负数则表示相等放在右子树中(黑体部分是回忆的,以后如果有空再考证,如果有大佬知道留言,感谢)

    根据上方案例,也可对TreeSet进行排序

  • 相关阅读:
    [转载] 论C#与Java之异同
    MultiThread WebRequest : Timeout
    FCL(2) :: CollectionBase & Collection
    msn 81000306 无法登录,解决方法
    接口一个被我忽略的地方接口重定向技术
    <<Clr Via C#>> Key Points (1) (46章)
    FCL(3):: ArrayList & List (1)
    TCP保活机制
    子网划分
    freopen函数
  • 原文地址:https://www.cnblogs.com/kitor/p/10497359.html
Copyright © 2020-2023  润新知