zoukankan      html  css  js  c++  java
  • 集合框架

    集合框架整理

    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进行排序

  • 相关阅读:
    ASP.net 知识框架
    MD5验证用户登陆密码
    企业面试题汇总.net
    MD5 加密,AES加密,解密 方法
    我选择了学Python
    校内网的错误信息
    Gmail客户端详细架构之一
    UE
    Gmail客户端详细架构之二:象Gmail一样上传文件
    PATH OR FILE NOT FOUND 之 RTX51.LIB
  • 原文地址:https://www.cnblogs.com/kitor/p/10497359.html
Copyright © 2011-2022 走看看