精华内容
下载资源
问答
  • 这篇博客是对Java Map对value值实现排序首先说一下如果Map对key进行从小到大默认排序是创建TreeMap对象。Map maps = new TreeMap<>();就行了。那么如何实现按value排序呢?这里使用的是java.util.Collections类...

    这篇博客是对Java Map对value值实现排序

    首先说一下如果Map对key进行从小到大默认排序是创建TreeMap对象。Map maps = new TreeMap<>();就行了。

    那么如何实现按value排序呢?

    这里使用的是java.util.Collections类实现排序,将Map转成List,再自定义比较器,代码如下:

    package day01_jichu;

    import java.util.ArrayList;

    import java.util.Collections;

    import java.util.Comparator;

    import java.util.List;

    import java.util.Map;

    import java.util.Map.Entry;

    import java.util.TreeMap;

    public class MapValSort {

    public static void main(String[] args) {

    Map maps = new TreeMap();

    maps.put("zhangsan", 22);

    maps.put("lisi", 24);

    maps.put("wangwu", 18);

    maps.put("zhaoliu", 22);

    //自定义比较器

    Comparator> valCmp = new Comparator>() {

    @Override

    public int compare(Entry o1, Entry o2) {

    // TODO Auto-generated method stub

    return o2.getValue()-o1.getValue(); // 降序排序,如果想升序就反过来

    }

    };

    //将map转成List,map的一组key,value对应list一个存储空间

    List> list = new ArrayList>(maps.entrySet()); //传入maps实体

    Collections.sort(list,valCmp); // 注意此处Collections 是java.util包下面的,传入List和自定义的valCmp比较器

    //输出map

    for(int i=0;i

    System.out.println(list.get(i).getKey() + " = " + list.get(i).getValue());

    }

    }

    }

    下面是输出结果

    cdac229630b3ba57ddc558e4e93174a3.png

    展开全文
  • TreeMap 和 HashMap 用法大致相同,但实际需求中,我们需要把一些数据进行排序;以前在项目中,数据库查询出来的数据放在List中,顺序都还是对的,但放在HashMap中,顺序就完全乱了。为了处理排序的问题:1. 对于...

    TreeMap 和 HashMap 用法大致相同,但实际需求中,我们需要把一些数据进行排序;

    以前在项目中,从数据库查询出来的数据放在List中,顺序都还是对的,但放在HashMap中,顺序就完全乱了。

    为了处理排序的问题:

    1. 对于一些简单的排序,如:数字,英文字母等

    TreeMap hm = new TreeMap(new Comparator() {

    public int compare(Object o1, Object o2) {

    //如果有空值,直接返回0

    if (o1 == null || o2 == null)

    return 0;

    return String.valueOf(o1).compareTo(String.valueOf(o2));

    }

    });

    备注:

    compareTo(String str) :是String 提供的一个方法,如果参数字符串等于此字符串,

    则返回 0 值;如果按字典顺序此字符串小于字符串参数,则返回一个小于 0 的值;

    如果按字典顺序此字符串大于字符串参数,则返回一个大于 0 的值。

    int compare(T o1,T o2):随第一个参数小于、等于或大于第二个参数而分别返回负整数、

    零或正整数。

    ?

    2.对于处理有中文排序的问题

    TreeMap hm = new TreeMap(new Comparator() {

    public int compare(Object o1, Object o2) {

    //如果有空值,直接返回0

    if (o1 == null || o2 == null)

    return 0;

    CollationKey ck1 = collator.getCollationKey(String.valueOf(o1));

    CollationKey ck2 = collator.getCollationKey(String.valueOf(o2));

    return ck1.compareTo(ck2);

    }

    });

    备注: CollationKey:CollationKey 表示遵守特定 Collator 对象规则的 String。

    比较两个CollationKey 将返回它们所表示的 String 的相对顺序。使用 CollationKey

    来比较 String 通常比使用 Collator.compare 更快。因此,当必须多次比较 String 时

    (例如,对一个 String 列表进行排序),使用 CollationKey 会更高效。

    实例:

    package ChineseSort;

    import java.util.Collection;

    import java.util.Iterator;

    import java.util.SortedMap;

    import java.util.TreeMap;

    public class TestSort {

    public static void main(String[] args) {

    // TODO Auto-generated method stub

    CollatorComparator comparator = new CollatorComparator();

    TreeMap map = new TreeMap(comparator);

    for(int i=0; i<10; i++) {

    String s = ""+(int)(Math.random()*1000);

    map.put(s,s);

    }

    map.put("abcd","abcd");

    map.put("Abc", "Abc");

    map.put("bbb","bbb");

    map.put("BBBB", "BBBB");

    map.put("北京","北京");

    map.put("中国","中国");

    map.put("上海", "上海");

    map.put("厦门", "厦门");

    map.put("香港", "香港");

    map.put("碑海", "碑海");

    Collection col = map.values();

    Iterator it = col.iterator();

    while(it.hasNext()) {

    System.out.println(it.next());}}}

    比较器类:

    package ChineseSort;

    import java.text.CollationKey;

    import java.text.Collator;

    import java.util.Comparator;

    public class CollatorComparator implements Comparator {

    Collator collator = Collator.getInstance();

    public int compare(Object element1, Object element2) {

    CollationKey key1 = collator.getCollationKey(element1.toString());

    CollationKey key2 = collator.getCollationKey(element2.toString());

    return key1.compareTo(key2);

    }

    }

    运行该类,运行结果如下:

    325

    62

    653

    72

    730

    757

    874

    895

    909

    921

    Abc

    abcd

    bbb

    BBBB

    碑海

    北京

    上海

    厦门

    香港

    中国

    此时可以看到中文的排序已经完成正常。如果想不让英文区分大小写,则修改CollatorComparator类,找到

    element1.toString()

    修改为:

    element1.toString().toLowerCase()

    当然你改成转换成大写的也无所谓了,当然element2.toString()也要同时修改为element2.toString().toLowerCase()。

    展开全文
  • 主要介绍了JAVA使用TreeMap对字符串进行排序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
  • package java20210327; import java.util.*; public class Main4601 { public static void main(String[] args) { ... map = new TreeMap<>(); map.put('c', 111); map.put('d', 555); map.put('b', 6
    package java20210327;
    
    import java.util.*;
    
    public class Main4601 {
        public static void main(String[] args) {
            Map<Character, Integer> map = new TreeMap<>();
            map.put('c', 111);
            map.put('d', 555);
            map.put('b', 666);
            map.put('a', 222);
            //未根据value进行排序,而是利用key的自然排序(字典排序)
            Set<Map.Entry<Character, Integer>> entries = map.entrySet();
            for (Map.Entry<Character, Integer> entry : entries) {
                System.out.println(entry.getKey() + " " + entry.getValue());
            }
            System.out.println("-------------------");
    
            //根据map中的value降序排序
            ArrayList<Map.Entry<Character, Integer>> entries1 = new ArrayList<>(map.entrySet());
            entries1.sort(new Comparator<Map.Entry<Character, Integer>>() {
                @Override
                public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) {
                    return o2.getValue() - o1.getValue();
                }
            });
            //lambda表达式写法
            //entries1.sort((o1, o2) -> o2.getValue()-o1.getValue());
            for (Map.Entry<Character, Integer> entry : entries1) {
                System.out.println(entry.getKey() + " " + entry.getValue());
            }
        }
    }
    
    
    a 222
    b 666
    c 111
    d 555
    -------------------
    b 666
    d 555
    a 222
    c 111
    
    展开全文
  • TreeMap实现排序,要求实现comparetor接口,重写compare(T o1,T o2)方法
  • TreeMap按照key排序

    2021-03-14 04:04:56
    import java.util.Comparator;import java.util.TreeMap;public class Test {public static void main(String[] args) {//不指定排序TreeMap treeMap1 = new TreeMap();treeMap1.put("2", "1");tr...

    package com.demo.base;

    import java.util.Comparator;

    import java.util.TreeMap;

    public class Test {

    public static void main(String[] args) {

    //不指定排序器

    TreeMap treeMap1 = new TreeMap();

    treeMap1.put("2", "1");

    treeMap1.put("b", "1");

    treeMap1.put("1", "1");

    treeMap1.put("a", "1");

    System.out.println("treeMap1="+treeMap1);

    //指定排序器

    TreeMap treeMap2 = new TreeMap(new Comparator(){

    /*

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

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

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

    * 返回正数表示:o1大于o2。

    */

    public int compare(String o1, String o2) {

    //指定排序器按照降序排列

    return o2.compareTo(o1);

    }

    });

    treeMap2.put("2", "1");

    treeMap2.put("b", "1");

    treeMap2.put("1", "1");

    treeMap2.put("a", "1");

    System.out.println("treeMap2="+treeMap2);

    }

    }

    执行输出结果:

    treeMap1={1=1, 2=1, a=1, b=1}

    treeMap2={b=1, a=1, 2=1, 1=1}

    小结:

    1、TreeMap如不指定排序器,默认将按照key值进行升序排序,如果指定了排序器,则按照指定的排序器进行排序。

    2、具体的排序规则,开发人员可以在int compare()方法中进行指定。

    展开全文
  • TreeMap 排序

    2021-01-17 10:29:50
    一、TreeMapTreeMap 默认排序规则:按照key的字典顺序来排序(升序)当然,也可以自定义排序规则:要实现Comparator接口。用法简单,先看下下面的demopublic classSortDemo {public static voidmain(String[] args) {...
  • java中集合Map中的键如果是int型,如何使它对应的值按照从大到小的顺序输出呢?关注:60答案:2mip版解决时间 2021-01-15 18:22提问者〖舉燈向ηáη〗2021-01-14 23:50最好举个例子,详细说一下……如果用TreeMap实现...
  • 主要介绍了Java TreeMap排序算法,结合实例形式分析了TreeMap排序算法的原理、实现方法与相关注意事项,需要的朋友可以参考下
  • TreeMap按VALUE排序

    2012-06-10 02:15:20
    TreeMap按VALUE排序
  • 1、 Map&lt;String, String&...//map 忽略大小写方法 taskDailyDetailMap.put("MK", "123"); taskDailyDetailMap.put("mk", "456"); System.out.pr...
  • import java.util.Comparator;import java.util.TreeMap;public class Main {public static void main(String[] args) {TreeMap map1 = new ... //默认的TreeMap升序排列TreeMap map2= new TreeMap(new Comparator(...
  • 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= ...
  • TreeMap 是一个有序的key-value集合,它是通过红黑树实现的,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法。继承于AbstractMap,所以它是一个Map,...
  • package demo1;import java.util.Comparator;import java.util.HashMap;...import java.util.TreeMap;public class Testing {public static void main(String[] args) {HashMap map = new HashMap...
  • TreeMap如何按照Value进行排序

    千次阅读 2020-07-01 21:46:01
    /** ... /**将TreeMap按照Value进行排序 最终结果词频高的在前*/ List<Map.Entry<String, Integer>> wordsList = new ArrayList<Map.Entry<String, Integer>>(wordsMa...
  • TreeMap倒序排序

    千次阅读 2019-03-18 17:37:52
    @Test public void testMap() { // Comparator.reverseOrder()倒序排序 Map<BigDecimal, String> infoMap = new TreeMap<>(Comparator.reverseOrder()); infoMap.put(new Big...
  • 本资源提供了List对对象中的属性和TreeMap, String>对键值排序,并针对100w条数据排序,对比List和TreeMap, String>排序的效率。个人认为排序效率对比可以相信,但也可能存在不科学之处,还请高手给与指点,多多包涵...
  • 1. 定义TreeMap排序方法使用Comparator对象作为参数需要注意的是:排序方法是针对键的,而不是值的。如果想针对值,需要更麻烦的一些方法(重写一些方法)TreeMap res = new TreeMap(new Comparator() {@...
  • TreeMap按key排序

    千次阅读 2018-12-04 23:17:16
    TreeMap 和 HashMap 用法大致相同,但实际需求中,我们需要把一些数据进行排序; 以前在项目中,数据库查询出来的数据放在List中,顺序都还是对的,但放在HashMap中,顺序就完全乱了。 为了处理排序的问题:  1. ...
  • TreeMap:package com;import java.util....import java.util.TreeMap;public class Test5 {/*** @param args*/public static void main(String[] args) {// TODO Auto-generated method stubTreeMap tree = ...
  • TreeMap 根据key 倒序排序

    万次阅读 2017-11-15 15:10:42
    java.util.TreeMap中的descendingMap()可实现
  • TreeMap底层是根据红黑树的数据结构构建的,默认是根据key的自然排序来组织(比如integer的大小,String的字典排序)。所以,TreeMap只能根据key来排序,是不能根据value来排序的(否则key来排序根本就不能形成TreeMap)...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 62,592
精华内容 25,036
关键字:

treemap从大到小排序

友情链接: svm.rar