栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

treemap 排序(java treeset排序)

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

treemap 排序(java treeset排序)

Java 提供的 Map 接口常用的实现类有 HashMap 和 TreeMap。HashMap 类实现的 Map 集合对于添加和删除映射关系效率更高。HashMap 通过哈希码对其内部的映射关系进行快速查找;而 TreeMap 中的映射关系存在一定的顺序,如果希望 Map 集合中的对象也存在一定的顺序,应该使用 TreeMap 类实现 Map 集合。

下面将通过实例来实现 Map 接口中的 TreeMap 集合按照 Key 键的升序与降序,按照 Value 值的排序。

(1)创建用户信息实体类

public class UserInfo
{
    private int userId; //用户编号
    private String userName; //用户名称
    private int age; //年龄
    private String blogInfo; //博客信息

    //构造函数
    public UserInfo(int userId, String userName, int age, String blogInfo)
    {
        this.userId = userId;
        this.userName = userName;
        this.age = age;
        this.blogInfo = blogInfo;
    }

    public int getUserId()
    {
        return userId;
    }

    public void setUserId(int userId)
    {
        this.userId = userId;
    }

    public String getUserName()
    {
        return userName;
    }

    public void setUserName(String userName)
    {
        this.userName = userName;
    }

    public int getAge()
    {
        return age;
    }

    public void setAge(int age)
    {
        this.age = age;
    }

    public String getBlogInfo()
    {
        return blogInfo;
    }

    public void setBlogInfo(String blogInfo)
    {
        this.blogInfo = blogInfo;
    }

    @Override
    public String toString()
    {
        return "用户编号:" + this.userId + " 用户名称:" + this.userName
                +  " 年龄:" + this.age + " 博客信息:" + this.blogInfo;
    }
}

(2)编写获取用户信息列表方法

private Map getUserMap()
{
    Map userMap = new HashMap<>();

    //创建用户信息
    UserInfo user1 = new UserInfo(1,"pan_junbiao的博客", 25, "您好,欢迎访问 pan_junbiao的博客");
    UserInfo user2 = new UserInfo(2,"pan_junbiao的博客", 18, "https://blog.csdn.net/pan_junbiao");
    UserInfo user3 = new UserInfo(3,"pan_junbiao的博客", 35, "您好,欢迎访问 pan_junbiao的博客");
    UserInfo user4 = new UserInfo(4,"pan_junbiao的博客", 32, "https://blog.csdn.net/pan_junbiao");

    //将用户信息加入Map(故意打乱顺序)
    userMap.put(user4.getUserId(),user4);
    userMap.put(user2.getUserId(),user2);
    userMap.put(user3.getUserId(),user3);
    userMap.put(user1.getUserId(),user1);

    return userMap;
}

1、TreeMap集合实现Key键的升序
@Test
public void testTreeMapAsc()
{
    //创建 TreeMap 集合
    TreeMap userTreeMap = new TreeMap<>();

    //获取用户信息列表
    userTreeMap.putAll(getUserMap());

    //遍历用户信息列表
    System.out.println("TreeMap集合,实现Key升序:");
    for(Iterator it = userTreeMap.keySet().iterator(); it.hasNext();)
    {
        int key = it.next();
        UserInfo value = userTreeMap.get(key);

        System.out.println("Key键:" + key);
        System.out.println("Value值:" + value);
    }
}

执行结果:

2、 TreeMap集合实现Key键的降序
@Test
public void testTreeMapDesc()
{
    //创建 TreeMap 集合,设置Key降序方法一:
    //TreeMap userTreeMap = new TreeMap<>(Collections.reverseOrder());

    //创建 TreeMap 集合,设置Key降序方法二:
    TreeMap userTreeMap = new TreeMap(new Comparator()
    {
        public int compare(Integer key1,Integer key2)
        {
            //降序排序
            return key2.compareTo(key1);
        }
    });

    //获取用户信息列表
    userTreeMap.putAll(getUserMap());

    //遍历用户信息列表
    System.out.println("TreeMap集合,实现Key降序:");
    for(Iterator it = userTreeMap.keySet().iterator(); it.hasNext();)
    {
        int key = it.next();
        UserInfo value = userTreeMap.get(key);

        System.out.println("Key键:" + key);
        System.out.println("Value值:" + value);
    }
}

执行结果:

 

3、TreeMap集合实现Value值的排序

【示例】按照用户年龄降序排序。

@Test
public void testTreeMapValue()
{
    //创建 TreeMap 集合
    TreeMap userTreeMap = new TreeMap<>();

    //获取用户信息列表
    userTreeMap.putAll(getUserMap());

    //将Map转换成List
    List> list = new ArrayList>(userTreeMap.entrySet());

    // 通过比较器来实现排序
    Collections.sort(list, new Comparator>()
    {
        @Override
        public int compare(Map.Entry user1, Map.Entry user2)
        {
            Integer age1 = user1.getValue().getAge();
            Integer age2 = user2.getValue().getAge();

            //按照用户年龄降序
            return age2.compareTo(age1);
        }
    });

    //遍历用户信息列表
    System.out.println("TreeMap集合,实现Value排序,按照用户年龄降序:");
    for (Map.Entry mapping : list)
    {
        System.out.println("Key键:" + mapping.getKey());
        System.out.println("Value值:" + mapping.getValue());
    }
}

执行结果:

 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/773305.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号