Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >map排序,根据key给map排序,根据value给map排序

map排序,根据key给map排序,根据value给map排序

作者头像
IT云清
发布于 2019-01-22 01:36:30
发布于 2019-01-22 01:36:30
1.7K00
代码可运行
举报
文章被收录于专栏:IT云清IT云清
运行总次数:0
代码可运行

1.根据key键给map排序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public static void main(String[] args) {
        Map<Integer,String> map = new TreeMap<>(new Comparator<Integer>(){
            @Override
            public int compare(Integero1, Integer o2) {
                return o1-o2;//按照key顺序排列,o2-o1是逆序
            }
        });
        map.put(3, "China");
        map.put(8, "America");
        map.put(2, "Canada");
        map.put(1, "Franch");
        map.put(5, "Banana");
//map遍历
        Set<Integer> set = map.keySet();
        Iterator<Integer> iterator = set.iterator();
        while(iterator.hasNext()){
            Integer key2 = iterator.next();
            System.out.println(key2+"-------"+map.get(key2));
        }
    }

排序结果:

1-------Franch 2-------Canada 3-------China

5-------Banana 8-------America

注意:标红部分的对应关系,因为key是Integer,所以,比较器的泛型和参数 都是Integer.

2.根据value给map排序

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
    public static void main(String[] args) {
        TreeMap<Integer, String> map = new TreeMap<>();
        map.put(3, "China");
        map.put(8, "America");
        map.put(2, "Canada");
        map.put(1, "Franch");
        map.put(5, "Banana");

        ArrayList<Entry<Integer, String>> list =
                new ArrayList<Map.Entry<Integer, String>>(map.entrySet());

        Collections.sort(list, new Comparator<Map.Entry<Integer, String>>() {
            @Override
            public int compare(Entry<Integer, String> o1,
                               Entry<Integer, String> o2) {
                return o1.getValue().compareTo(o2.getValue());//顺序
            }
        });

        for (Entry<Integer, String> entry : list) {
            System.out.println(entry.getKey()+"------"+entry.getValue());
        }
    }

排序结果:

8------America 5------Banana 2------Canada 3------China 1------Franch

如果想要逆序,改变o1和o2的顺序即可,蓝色部分改为:

o2.getValue().compareTo(o1.getValue())

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2017年08月22日,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
深入浅出 Map 的实现(HashMap、HashTable、LinkedHashMap、TreeMap)
HashMap、TreeMap、HashTable、LinkedHashMap 共同实现了接口java.util.Map, 都是键值对形式,且map的key不允许重复
执笔记忆的空白
2020/12/25
1.3K0
Java集合之Map
​ ④ jdk 7 底层结构是: 数组加链表。 jdk 8 中底层结构: 数组 + 链表 + 红黑树。
OY
2022/02/21
3710
Java集合之Map
【数据结构】map&set详解
Set接口是一种不包含重复元素的集合。它继承自Collection接口,所以可以使用Collection所拥有的方法,Set接口的实现类主要有HashSet、LinkedHashSet、TreeSet等,它们各自以不同的方式存储元素,但都遵循Set接口的规定。
2的n次方
2024/10/15
1610
【数据结构】map&set详解
java map遍历、排序,根据value获取key
若要取 map 中 value 的最大值 或 与之对应的 key(整型或浮点型):可利用list
Krry
2018/09/10
8.6K0
Java8-2-Lambda表达式实战-一句话实现Map中按照Value排序
*/publicstatic>Map sortByValue(Map map) {List> list =newLinkedList<>(map.entrySet()); Collections.sort(list,newComparator>() {@Overridepublicintcompare(Map.Entry o1,Map.Entry o2) {return(o2.getValue()).compareTo(o1.getValue()); } });Map result =newLinkedHashMap<>();for(Map.Entry entry : list) { result.put(entry.getKey(), entry.getValue()); }returnresult; }
java架构师
2018/12/27
9390
Java编程的一些小技巧-----基础语法篇(2)
比如上面的代码,只跳出了最里面的一层循环,如果要跳出两层循环,应该咋办?可以用break+label的语法,例子如下
秃头哥编程
2019/06/04
5530
HashMap按照value排序
给定一个HashMap<String, BuziObj> buziObjMap;,其中 BuziObj 实现了 Comparable 接口。现在需要将 buziObjMap 按照 BuziObj 有序输出。注意,BuziObj 实例有可能相等,要求多次返回的结果一致。可以使用JDK提供的各种API。
崔笑颜
2020/06/08
9460
4个主要的map实现类介绍
map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。其中这四者的区别如下(简单介绍):
全栈程序员站长
2022/09/02
2900
Map元素排序
开发中会遇到对Map元素排序的问题,下面介绍下如何根据key、value排序. key排序 使用TreeMap的Comparator比较 TreeMap默认是升序的,如果需要自定义排序规则,可以使用Comparator: Map<String, Integer> map = new TreeMap<String, Integer>(new Comparator<String>() { // 按照key排序 @Override publi
LiosWong
2019/11/06
6250
Leetcode 347.Top K Frequent Elements
Top K Frequent Elements   一句话理解题意:输出数组中出现次数对多的k个数。   在如果用C语言来写这个题目,思路就是先按数的大小排序,然后再用一个结构体数组保存每个数的出现次次数。 因为数组已经有序了,所以只需要遍历一次数组就可以获得每个数的出现次数了。 结构体如下
xindoo
2021/01/21
5150
Map集合排序
public class MapOrder { public static void main(String[] args) { HashMap<String,Integer> hashMap = new HashMap<String,Integer>(); hashMap.put("d",11); hashMap.put("k",5); hashMap.put("l",16); hashMap.put("p",7);
会说话的丶猫
2020/09/24
8910
set\list\map部分源码解析
List、Set实现Collection接口。Map并没有实现任何接口,但内部聚合了一个Collection对象
洋仔聊编程
2019/01/15
7980
12:集合map、工具类
一、map集合 Map:一次添加一对元素。Collection 一次添加一个元素。 Map也称为双列集合,Collection集合称为单列集合。 其实map集合中存储的就是键值对(结婚证书), map
六月的雨
2018/05/14
9960
java map()_java之map的基本介绍
在讲解Map排序之前,我们先来稍微了解下map。map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。其中这四者的区别如下(简单介绍):
全栈程序员站长
2022/09/08
6990
JAVA map排序实现
Map排序的方式有很多种,这里记录下自己总结的两种比较常用的方式:按键排序(sort by key), 按值排序(sort by value)。
全栈程序员站长
2022/09/14
6150
(43) 剖析TreeMap / 计算机程序的思维逻辑
40节介绍了HashMap,我们提到,HashMap有一个重要局限,键值对之间没有特定的顺序,我们还提到,Map接口有另一个重要的实现类TreeMap,在TreeMap中,键值对之间按键有序,TreeMap的实现基础是排序二叉树,上节我们介绍了排序二叉树的基本概念和算法,本节我们来详细讨论TreeMap。 除了Map接口,因为有序,TreeMap还实现了更多接口和方法,下面,我们先来看TreeMap的用法,然后探讨其内部实现。 基本用法 构造方法 TreeMap有两个基本构造方法: public Tre
swiftma
2018/01/31
9280
(43)  剖析TreeMap / 计算机程序的思维逻辑
集合框架【第三章】——Map集合
1. Map   1.1 特点:无序、以键值对的形式添加元素,键不能重复,(如果多次往同一个索引存储元素,以最后一个存储为准,后面存储内容会将前面存储内容覆盖)值可以重复      它没有继承Collection接口。map集合一次要存两个元素,第一个是Key(键-索引)、第二个内容是value(值)   1.2 遍历     1.2.1 先取出保存所有键的Set,再遍历Set即可(2种)     1.2.2 先取出保存所有Entry的Set,再遍历此Set即可
用户10196776
2022/11/22
3110
集合框架【第三章】——Map集合
Java容器及其常用方法汇总
Java Collections 框架中包含了大量的接口及其实现类和操作它们的算法,主要包括列表(List)、集合(Set)、映射(Map),如下:
科技新语
2025/02/13
1570
Java容器及其常用方法汇总
Java集合框架-Collection03-Map集合
目录 1. Map 用一个题目给大家说一下吧! Map集合3层嵌套使用(2Map+1List)  1.2 遍历(代码如下)         1.2.1 先取出保存所有键的Set,再遍历Set即可(2种)         1.2.2 先取出保存所有Entry的Set,再遍历此Set即可 2.HashMap与Hashtable之间的区别(重点) 3. 其它(地狱回调)  ---- 1. Map  1.1 特点:无序、以键值对的形式添加元素,键不能重复,(如果多次往同一个索引存储元素,以最后一个存储为准,后
天蝎座的程序媛
2022/11/18
2260
Java集合框架-Collection03-Map集合
java对数组、List、Map排序及常用方法
下午真的是睡了一下午,同学笑我太能睡,现在闲下来就写总结一下之前那段时间里学到的。这里写点java 的知识,java在sort上的一些用法吧,之前这里一直都不太熟练,就想着总结一下。 首先是对数组的排序,讲到对数组的排序,就不得不提到Arrays类了,它可以对数组进行排序
张凝可
2019/08/22
1.3K0
相关推荐
深入浅出 Map 的实现(HashMap、HashTable、LinkedHashMap、TreeMap)
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验