电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java TreeMap升序|降序排列和按照value進(jìn)行排序的案例

瀏覽:42日期:2022-08-22 15:57:22

TreeMap 升序|降序排列

import java.util.Comparator;import java.util.TreeMap;public class Main { public static void main(String[] args) { TreeMap<Integer,Integer> map1 = new TreeMap<Integer,Integer>(); //默認(rèn)的TreeMap升序排列 TreeMap<Integer,Integer> map2= new TreeMap<Integer,Integer>(new Comparator<Integer>(){ /** int compare(Object o1, Object o2) 返回一個(gè)基本類型的整型,* 返回負(fù)數(shù)表示:o1 小于o2,* 返回0 表示:o1和o2相等,* 返回正數(shù)表示:o1大于o2。*/ public int compare(Integer a,Integer b){return b-a; } }); map2.put(1,2); map2.put(2,4); map2.put(7, 1); map2.put(5,2); System.out.println('Map2='+map2); map1.put(1,2); map1.put(2,4); map1.put(7, 1); map1.put(5,2); System.out.println('map1='+map1); }}

TreeMap按照value進(jìn)行排序

TreeMap底層是根據(jù)紅黑樹的數(shù)據(jù)結(jié)構(gòu)構(gòu)建的,默認(rèn)是根據(jù)key的自然排序來(lái)組織(比如integer的大小,String的字典排序)。所以,TreeMap只能根據(jù)key來(lái)排序,是不能根據(jù)value來(lái)排序的(否則key來(lái)排序根本就不能形成TreeMap)。

今天有個(gè)需求,就是要根據(jù)treeMap中的value排序。所以網(wǎng)上看了一下,大致的思路是把TreeMap的EntrySet轉(zhuǎn)換成list,然后使用Collections.sor排序。

代碼:

public static void sortByValue() { Map<String,String> map = new TreeMap<String,String>(); map.put('a', 'dddd'); map.put('d', 'aaaa'); map.put('b', 'cccc'); map.put('c', 'bbbb');List<Entry<String, String>> list = new ArrayList<Entry<String, String>>(map.entrySet());Collections.sort(list,new Comparator<Map.Entry<String,String>>() { //升序排序 public int compare(Entry<String, String> o1, Entry<String, String> o2) {return o1.getValue().compareTo(o2.getValue()); } });for (Entry<String, String> e: list) { System.out.println(e.getKey()+':'+e.getValue()); } }

補(bǔ)充知識(shí):使用比較器對(duì)Treemap按照value進(jìn)行排序

使用比較器對(duì)Treemap按照value進(jìn)行排序(value值只有是string類型時(shí)才適用)

有時(shí)我們需要根據(jù)TreeMap的value來(lái)進(jìn)行排序。對(duì)value排序我們就需要借助于Collections的sort(List list, Comparator

public class MapSortDemo { public static void main(String[] args) { Map<String, String> map = new TreeMap<String, String>(); map.put('KFC', 'kfc'); map.put('WNBA', 'wnba'); map.put('NBA', 'nba'); map.put('CBA', 'cba'); Map<String, String> resultMap = sortMapByKey(map); //按Key進(jìn)行排序// Map<String, String> resultMap = sortMapByValue(map); //按Value進(jìn)行排序 for (Map.Entry<String, String> entry : resultMap.entrySet()) { System.out.println(entry.getKey() + ' ' + entry.getValue()); } } /** * 使用 Map按value進(jìn)行排序 * @param map * @return */ public static Map<String, String> sortMapByValue(Map<String, String> oriMap) { if (oriMap == null || oriMap.isEmpty()) { return null; } Map<String, String> sortedMap = new LinkedHashMap<String, String>(); List<Map.Entry<String, String>> entryList = new ArrayList<Map.Entry<String, String>>(oriMap.entrySet()); Collections.sort(entryList, new MapValueComparator()); Iterator<Map.Entry<String, String>> iter = entryList.iterator(); Map.Entry<String, String> tmpEntry = null; while (iter.hasNext()) { tmpEntry = iter.next(); sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue()); } return sortedMap; }}

//比較器class MapValueComparator implements Comparator<Map.Entry<String, String>> { @Override public int compare(Entry<String, String> me1, Entry<String, String> me2) { return me1.getValue().compareTo(me2.getValue()); }}

方式二

public class TreeMapTest { public static void main(String[] args) { Map<String, String> map = new TreeMap<String, String>(); map.put('a', 'ddddd'); map.put('c', 'bbbbb'); map.put('d', 'aaaaa'); map.put('b', 'ccccc'); //這里將map.entrySet()轉(zhuǎn)換成list List<Map.Entry<String,String>> list = new ArrayList<Map.Entry<String,String>>(map.entrySet()); //然后通過比較器來(lái)實(shí)現(xiàn)排序 Collections.sort(list,new Comparator<Map.Entry<String,String>>() { //升序排序 public int compare(Entry<String, String> o1, Entry<String, String> o2) {return o1.getValue().compareTo(o2.getValue()); } }); for(Map.Entry<String,String> mapping:list){ System.out.println(mapping.getKey()+':'+mapping.getValue()); } }}

運(yùn)行結(jié)果如下:

d:aaaaa

c:bbbbb

b:ccccc

a:ddddd

以上這篇Java TreeMap升序|降序排列和按照value進(jìn)行排序的案例就是小編分享給大家的全部?jī)?nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 船用锚链|专业锚链生产厂家|安徽亚太锚链制造有限公司 | 压片机_高速_单冲_双层_花篮式_多功能旋转压片机-上海天九压片机厂家 | 国资灵活用工平台_全国灵活用工平台前十名-灵活用工结算小帮手 | 元拓建材集团官方网站 | 杭州成人高考_浙江省成人高考网上报名 | 学习安徽网| 苏州教学设备-化工教学设备-环境工程教学模型|同科教仪 | 雷达液位计_超声波风速风向仪_雨量传感器_辐射传感器-山东风途物联网 | 北京浩云律师事务所-企业法律顾问_破产清算等公司法律服务 | 十字轴_十字轴万向节_十字轴总成-南京万传机械有限公司 | 台式核磁共振仪,玻璃软化点测定仪,旋转高温粘度计,测温锥和测温块-上海麟文仪器 | 北京网络营销推广_百度SEO搜索引擎优化公司_网站排名优化_谷歌SEO - 北京卓立海创信息技术有限公司 | 广州中央空调回收,二手中央空调回收,旧空调回收,制冷设备回收,冷气机组回收公司-广州益夫制冷设备回收公司 | 苏州伊诺尔拆除公司_专业酒店厂房拆除_商场学校拆除_办公楼房屋拆除_家工装拆除拆旧 | 密集架|电动密集架|移动密集架|黑龙江档案密集架-大量现货厂家销售 | 脱硫搅拌器厂家-淄博友胜不锈钢搅拌器厂家 | 武汉不干胶印刷_标签设计印刷_不干胶标签印刷厂 - 武汉不干胶标签印刷厂家 | 特种阀门-调节阀门-高温熔盐阀-镍合金截止阀-钛阀门-高温阀门-高性能蝶阀-蒙乃尔合金阀门-福建捷斯特阀门制造有限公司 | 伟秀电气有限公司-10kv高低压开关柜-高低压配电柜-中置柜-充气柜-欧式箱变-高压真空断路器厂家 | 郑州外墙清洗_郑州玻璃幕墙清洗_郑州开荒保洁-河南三恒清洗服务有限公司 | 杭州营业执照代办-公司变更价格-许可证办理流程_杭州福道财务管理咨询有限公司 | 理化生实验室设备,吊装实验室设备,顶装实验室设备,实验室成套设备厂家,校园功能室设备,智慧书法教室方案 - 东莞市惠森教学设备有限公司 | 膜结构_ETFE膜结构_膜结构厂家_膜结构设计-深圳市烨兴智能空间技术有限公司 | 致胜管家软件服务【在线免费体验】 | 中开泵,中开泵厂家,双吸中开泵-山东博二泵业有限公司 | 宝鸡市人民医院| 变色龙PPT-国内原创PPT模板交易平台 - PPT贰零 - 西安聚讯网络科技有限公司 | 新能源汽车电池软连接,铜铝复合膜柔性连接,电力母排-容发智能科技(无锡)有限公司 | Magnescale探规,Magnescale磁栅尺,Magnescale传感器,Magnescale测厚仪,Mitutoyo光栅尺,笔式位移传感器-苏州连达精密量仪有限公司 | 2025福建平潭岛旅游攻略|蓝眼泪,景点,住宿攻略-趣平潭网 | 聚合氯化铝-碱式氯化铝-聚合硫酸铁-聚氯化铝铁生产厂家多少钱一吨-聚丙烯酰胺价格_河南浩博净水材料有限公司 | 爱佩恒温恒湿测试箱|高低温实验箱|高低温冲击试验箱|冷热冲击试验箱-您身边的模拟环境试验设备技术专家-合作热线:400-6727-800-广东爱佩试验设备有限公司 | 微妙网,专业的动画师、特效师、CG模型设计师网站! - wmiao.com 超声波电磁流量计-液位计-孔板流量计-料位计-江苏信仪自动化仪表有限公司 | 澳威全屋定制官网|极简衣柜十大品牌|衣柜加盟代理|全屋定制招商 百度爱采购运营研究社社群-店铺托管-爱采购代运营-良言多米网络公司 | 酶联免疫分析仪-多管旋涡混合仪|混合器-莱普特科学仪器(北京)有限公司 | 2025世界机器人大会_IC China_半导体展_集成电路博览会_智能制造展览网 | 二手Sciex液质联用仪-岛津气质联用仪-二手安捷伦气质联用仪-上海隐智科学仪器有限公司 | 定制液氮罐_小型气相液氮罐_自增压液氮罐_班德液氮罐厂家 | 自动螺旋上料机厂家价格-斗式提升机定制-螺杆绞龙输送机-杰凯上料机 | 济南轻型钢结构/济南铁艺护栏/济南铁艺大门-济南燕翔铁艺制品有限公司 | 合肥网带炉_安徽箱式炉_钟罩炉-合肥品炙装备科技有限公司 |