TreeMap 升序|降序排列

import java.util.Comparator;

import java.util.TreeMap;

public class Main {

public static void main(String[] args) {

TreeMap map1 = new TreeMap(); //默认的TreeMap升序排列

TreeMap map2= new TreeMap(new Comparator(){

/*

* int compare(Object o1, Object o2) 返回一个基本类型的整型,

* 返回负数表示:o1 小于o2,

* 返回0 表示:o1和o2相等,

* 返回正数表示: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进行排序

TreeMap底层是根据红黑树的数据结构构建的,默认是根据key的自然排序来组织(比如integer的大小,String的字典排序)。所以,TreeMap只能根据key来排序,是不能根据value来排序的(否则key来排序根本就不能形成TreeMap)。

今天有个需求,就是要根据treeMap中的value排序。所以网上看了一下,大致的思路是把TreeMap的EntrySet转换成list,然后使用Collections.sor排序。

代码:

public static void sortByValue() {

Map map = new TreeMap();

map.put("a", "dddd");

map.put("d", "aaaa");

map.put("b", "cccc");

map.put("c", "bbbb");

List> list = new ArrayList>(map.entrySet());

Collections.sort(list,new Comparator>() {

//升序排序

public int compare(Entry o1, Entry o2) {

return o1.getValue().compareTo(o2.getValue());

}

});

for (Entry e: list) {

System.out.println(e.getKey()+":"+e.getValue());

}

}

补充知识:使用比较器对Treemap按照value进行排序

使用比较器对Treemap按照value进行排序(value值只有是string类型时才适用)

有时我们需要根据TreeMap的value来进行排序。对value排序我们就需要借助于Collections的sort(List list, Comparator

public class MapSortDemo {

public static void main(String[] args) {

Map map = new TreeMap();

map.put("KFC", "kfc");

map.put("WNBA", "wnba");

map.put("NBA", "nba");

map.put("CBA", "cba");

Map resultMap = sortMapByKey(map); //按Key进行排序

// Map resultMap = sortMapByValue(map); //按Value进行排序

for (Map.Entry entry : resultMap.entrySet()) {

System.out.println(entry.getKey() + " " + entry.getValue());

}

}

/**

* 使用 Map按value进行排序

* @param map

* @return

*/

public static Map sortMapByValue(Map oriMap) {

if (oriMap == null || oriMap.isEmpty()) {

return null;

}

Map sortedMap = new LinkedHashMap();

List> entryList = new ArrayList>(

oriMap.entrySet());

Collections.sort(entryList, new MapValueComparator());

Iterator> iter = entryList.iterator();

Map.Entry tmpEntry = null;

while (iter.hasNext()) {

tmpEntry = iter.next();

sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());

}

return sortedMap;

}

}

//比较器

class MapValueComparator implements Comparator> {

@Override

public int compare(Entry me1, Entry me2) {

return me1.getValue().compareTo(me2.getValue());

}

}

方式二

public class TreeMapTest {

public static void main(String[] args) {

Map map = new TreeMap();

map.put("a", "ddddd");

map.put("c", "bbbbb");

map.put("d", "aaaaa");

map.put("b", "ccccc");

//这里将map.entrySet()转换成list

List> list = new ArrayList>(map.entrySet());

//然后通过比较器来实现排序

Collections.sort(list,new Comparator>() {

//升序排序

public int compare(Entry o1,

Entry o2) {

return o1.getValue().compareTo(o2.getValue());

}

});

for(Map.Entry mapping:list){

System.out.println(mapping.getKey()+":"+mapping.getValue());

}

}

}

运行结果如下:

d:aaaaa

c:bbbbb

b:ccccc

a:ddddd

以上这篇Java TreeMap升序|降序排列和按照value进行排序的案例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

java treemap value排序_Java TreeMap升序|降序排列和按照value进行排序的案例相关推荐

  1. java升序降序排列desc,TreeMap升序|降序排列和按照value进行排序

    TreeMap 升序|降序排列 import java.util.Comparator; import java.util.TreeMap; public class Main { public st ...

  2. 实现升序降序排列问题

    package com.bjpowernode.jdbc;import java.sql.*; import java.util.Scanner;/*** 需求:用户在控制台上输入desc则降序,输入 ...

  3. Java 数组升序降序排列Arrays.sort( )通俗易懂

    方法一: 升序排列代码 import java.util.Arrays; import java.util.Comparator; public class Test{public static vo ...

  4. 对Dataframe数据Excel进行升序降序排列

    按照UGDS_WHITE大小进行排序 , 使用ascending指定按照大小排序 sort_values()升序 sort_values(ascending=True) 升序 sort_values( ...

  5. HTML中数字降序排列怎么做,javascript实现表格升序降序排列(示例代码)

    TableSorter body{font-size:12px;line-height:25px;}tr{height:25px;}th{font-size:14px;border-bottom:so ...

  6. mysql 2008降序排列_sql 升序降序排列

    展开全部 降序 SELECT * FROM kc ORDER BY cpbh DESC 升序 SELECT * FROM kc ORDER BY cpbh asc 实例:62616964757a686 ...

  7. 数据库的升序降序排列

    数据库中使用order by语句进行排序,其中升序用asc,降序用desc. 如: select * from t order by 列a asc; -- 这是升序 asc可以省略不写 select ...

  8. java升序排列数组_java数组的升序降序排列

    展开全部 先来说你的问题,,你要实现写入文件是排序的结果,,那么你就应该先排序再写到文件,,而不是32313133353236313431303231363533e59b9ee7ad943133333 ...

  9. SQL语句 基础排序 单列排序 多列排序 升序降序 基础操作符 where语句 between 高级操作符 AND操作符 OR操作符 IN 和 NOT IN 优先级 Like操作符 模糊匹配 %

    基础排序: 单列排序: 前面我们学习了数据的查询,查询出来的数据没有特定的顺序,要将查询出来的数据排序,我们可是使用ORDER BY语句: 例如我们将年龄按照升序排列: select age from ...

最新文章

  1. golang从stdin中读取一行
  2. java之泛型_java之泛型
  3. “一碗牛肉面”引发的管理难题
  4. 机器学习Sklearn实战——其他线性模型
  5. rar x64 5.50 linux,WinRAR 5.50 简体中文正式版发布
  6. c语言while跳不出来,这个while循环终止了却跳不出来为什么
  7. Solaris11创建NFS服务
  8. jQuery实现checkBox全选全取消
  9. 怎么在github上下载项目_Github上Top20 Python与机器学习开源项目汇总
  10. Flutter之Dialog 简单使用
  11. Windows10 设置网络共享文件驱动器
  12. pkcs8格式证书转换pkcs1格式
  13. 腾讯地图产业版WeMap 升级
  14. Qt实现圆形组合按钮,摇杆
  15. HP刀片服务器系统Flex,HP刀片服务器系统Flex-10 VC配置与VMware vSphere网络设计
  16. 基于SSM的医院科室人员管理系统设计与实现毕业论文+任务书+项目源码及数据库
  17. day21|216.组合总和III、17.电话号码的字母组合
  18. python中的values函数_Pandas之排序函数sort_values()的实现
  19. ise17.4 版本的安装
  20. bp神经网络需要多少样本,bp神经网络训练时间

热门文章

  1. 剑指offer——面试题58:二叉树的下一个结点
  2. C++基础之返回数组
  3. 树的先序遍历递归的理解
  4. 20160828小结
  5. Python学习:Mysql(二)
  6. 2017.11.20T19_5
  7. 常见概率分布图表总结
  8. Java String简单知识点总结
  9. 逻辑回归模型(Logistic Regression)及Python实现
  10. hdoj--2094--产生冠军(集合函数)