精华内容
下载资源
问答
  • hashmap按照value大小排序
    千次阅读
    2021-05-24 16:17:54

    1、hashMap和treeMap比较

         简单来说,hashMap为无序,通过数组+链表+红黑树实现。treeMap由于实现了sortedMap接口,默认按照key进行排序。

    2、应用场景

        某些特殊情况下,我们需要对map的value值进行排序输出,Map.Entry.comparingByValue()中已经为我们实现了按照值排序,实现代码如下:

    HashMap<String, String> map = new HashMap<String, String>();
    map.put("22", "11");
    map.put("33", "22");
    map.put("11", "33");
    map.entrySet().stream().sorted(Map.Entry.comparingByValue()).forEach(System.out::println);

    翻看源码可以发现 comparingByValue的实现代码,如果自己实现则可替换如下:

    map.entrySet().stream().sorted((c1, c2) -> c1.getValue().compareTo(c2.getValue())).forEach(System.out::println);

     

    更多相关内容
  • Java将Hashmap按照value的值进行排序

    千次阅读 2020-09-03 13:43:07
    Java将Hashmap按照value的值进行排序 我们会将普通的数组用Arrays.sort()方法进行排序。而我们对其他类型进行排序的时候,我们需要重载比较器,对接口进行重写其中的compare函数。我们可以使用匿名类来进行填写。...

                          Java将Hashmap按照value的值进行排序

     

    我们会将普通的数组用Arrays.sort()方法进行排序。而我们对其他类型进行排序的时候,我们需要重载比较器,对接口进行重写其中的compare函数。我们可以使用匿名类来进行填写。

    1、value 类型为Int

    List<Map.Entry<String,Integer>> list=new ArrayList<>();
    list.addAll(map.entrySet());  
    Collections.sort(list,new Comparator<Map.Entry<String, Integer>>() {
    
       @Override
       public int compare(Map.Entry<String, Integer> o1, Map.Entry<String, Integer> o2) {
            return o2.getValue()-o1.getValue();
       }
    
    });

    2、value 类型为Double

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.HashMap;
    import java.util.List;
    import java.util.Map;
     
    public class Test {
      
      public static void main(String[] args) {    
        Map<String, Double> map_Data = new HashMap<String, Double>();
        map_Data.put("A", 0.98);
        map_Data.put("B", 0.50);
        map_Data.put("C", 0.76);
        map_Data.put("D", 0.23);
        map_Data.put("E", 0.85);
        System.out.println(map_Data);
        List<Map.Entry<String, Double>> list_Data = new ArrayList<Map.Entry<String, Double>>(map_Data.entrySet());
        System.out.println(list_Data);
        Collections.sort(list_Data, new Comparator<Map.Entry<String, Double>>() {  
          public int compare(Map.Entry<String, Double> o1, Map.Entry<String, Double> o2)
          {
            if ((o2.getValue() - o1.getValue())>0)
              return 1;
            else if((o2.getValue() - o1.getValue())==0)
              return 0;
            else 
              return -1;
          }
        });
    

     

    展开全文
  • hashmap根据value值进行排序

    千次阅读 2021-03-31 13:57:01
    hashmap根据value值进行排序,首先将hashmap集合装进list集合中 List<Map.Entry<Character , Integer>> list = new ArrayList<>(map.entrySet()); 方法一:用Collections.sort()方法进行排序 ...

    hashmap根据value值进行排序,首先将hashmap集合装进list集合中

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

    方法一:用Collections.sort()方法进行排序

    (一)重写Collections.sort()的compare方法

    Collections.sort(list, new Comparator<Map.Entry<Character, Integer>>()
            {
                @Override
                public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) {
                    //按照value值升序
                    return o1.getValue() - o2.getValue();
                    //按照value值降序
                    //return o2.getValue() - o1.getValue();
                }
            });
    

    (二)Java 8之后也可以用增强版的Comparator

    Collections.sort(list, Comparator.comparingInt(Map.Entry::getValue));
    

    方法二:用list.sort()方法进行排序

    (一)重写list.sort()里的compare方法

    list.sort(new Comparator<Map.Entry<Character, Integer>>() {
                @Override
                public int compare(Map.Entry<Character, Integer> o1, Map.Entry<Character, Integer> o2) {
                    return o1.getValue() - o2.getValue();
                }
            });
    

    (二)或者直接用Lambda表达式进行比较

    list.sort((o1, o2) -> o1.getValue() - o2.getValue());//Lambda表达式
    

    (三)增强版Comparator

    list.sort(list, Comparator.comparingInt(Map.Entry::getValue));
    

    最后将结果进行排序输出

    for (Map.Entry<Character , Integer> c:list) {
                System.out.println(c.getKey() +" : " + c.getValue());
            }
    
    展开全文
  • import java.util.*; public class HashMapSort { public static void main... HashMap<Integer, Integer> map = new HashMap<>(); map.put(3, 2); map.put(4, 1); map.put(5, 4); map.put(6, 8);
    public class HashMapSort {
        public static void main(String[] args) {
            HashMap<Integer, Integer> map = new HashMap<>();
            map.put(6, 2);
            map.put(10, 1);
            map.put(3, 4);
            map.put(2, 8);
            map.put(19, 6);
            map.put(26, 4);
            map.put(15, 5);
            for(Map.Entry<Integer, Integer> entry : map.entrySet()){
                System.out.println(entry.getKey() + " = " + entry.getValue());
            }
            System.out.println("-----------------------------");
    
            // 将 map.entrySet() 转换成 list
            ArrayList<Map.Entry<Integer, Integer>> list = new ArrayList<>(map.entrySet());
            Collections.sort(list, new Comparator<Map.Entry<Integer, Integer>>() {
                @Override
                public int compare(Map.Entry<Integer, Integer> o1, Map.Entry<Integer, Integer> o2) {
                    return o1.getValue() - o2.getValue();
                }
            });
            for(Map.Entry<Integer, Integer> entry : list){
                System.out.println(entry.getKey() + " = " + entry.getValue());
            }
        }
    }
    

    运行结果:
    图示

    展开全文
  • Java HashMap按照value排序的方法

    千次阅读 2021-11-23 15:59:13
    HashMapvalue值没有排序功能,若要进行较轻松的排序,可改写Comparator接口方法compare进行排序,代码如下: Map<String, Integer> map = new HashMap<String, Integer>(); map.put("d", 2); map.put...
  • 加入一个函数解决java中hashmap按照value或key排序问题
  • HashMapValue排序

    2021-09-01 09:47:26
    1、hashmapvalue排序 //hashMap value 排序 public class demo3 { public static void main(String[] args) { HashMap map_Data = new HashMap(); map_Data.put("0", 90); map_Data.put("1", 50); map_Data....
  • HashMap根据value排序 (抄的)

    千次阅读 2020-06-23 17:06:04
    链接: HashMap根据value排序 需要用的时候copy来改一改 /** * hashMap排序 * @author lizhibiao * @date 2018/12/3 11:47 */ public class TestHashMapCollections { public static void main(String[] args)...
  • Map<String, String> map = getMap(); List<Entry<String, String>...// 按value,从大到小排序 list.sort((o1, o2) -> Integer.parseInt(o2.getValue()) - Integer.parseInt(o1.getValue()));
  • 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。请你返回排序后的数组。 注意:arr中不含相同元素。 class Solution { public int[] sortByBits(int[] arr) { int n = arr.length; ...
  • 可以对HashMap, HashSet, HashTable, LinkedHashMap, TreeMap, 甚至ConcurrentHashMap都可以排序。基本思路就是先拿到集合,可以用entrySet()方法得到。然后调用stream方法,里面就可以调用sort方法了。对Map的排序...
  • HashMap如何按值value排序

    万次阅读 多人点赞 2019-01-24 17:06:15
    HashMap如何按值value排序简单介绍相关组件HashMapComparatorCollections.sort方法实现原理简介实现代码tips 简单介绍相关组件 HashMap 我们知道,HashMap是一个数组和链表组成的一种链表散列结构,存储方式是根据...
  • 按照ValueHashMap排序

    2021-03-08 09:26:01
    TreeMap基于红黑树排序的算法,默认数据put进来按照key的大小升序排序,如果需要改成按value排序,则自定义新的Comparator,重写compare(Object, Object)方法即可。看TreeMap的源码可知,它实现了AbstractMap类的put...
  • 自己写的一个根据Map的值进行排序的工具类,键的值可以是各种引用类型. public static <E> LinkedHashMap<E,Integer> sortByMapValue(Map<E,Integer> originalMap){ List<Map<E,Integer...
  • Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等。这篇文章主要介绍了Java Map 按照Value排序的实现方法,需要的朋友可以参考下
  • package test; import java.util.Collections; import java.util.Comparator;...import java.util.HashMap; import java.util.Iterator; import java.util.LinkedList; import java.util.List; import java.util.Map;
  • List<Map.Entry<Integer,Integer>>list = map.entrySet().stream() .sorted((entry1, entry2) -> entry1.getValue().compareTo(entry2.getValue())) ...这里假设value类型为Integer,其他类型类似
  • hashmap按照value从大到小排序value相等时按照key从小到大排序。 [2]是从小到大排序,在[2]代码基础上交换o1,o2位置即可。 代码中用到[1]中提到的在value相等时再比较key的方法。 static Map sortByValue...
  • hashmap中根据key和value的值排序

    千次阅读 2021-11-23 20:18:21
    本文总结hashmap分别根据key值和value排序的方法。 一、根据key排序 hashmap是无序的。 当所有key的hash的最大值<数组的长度-1时,HashMap可以将存入的元素按照key的hash从小到大排序。这个后期我会从源码的...
  •  最近开发中用到了HashMap ,而且想到要利用其value大小排序。。真是个伤脑筋的问题。 还好,经过查阅各个地方的资料。发现这个下边的代码处理是最简单有效的。代码很少,却达到目的了。 一般我坚持的一个原则...
  • 先上代码: import java.io.*; import java.util.*; public class Main{ public static void main(String... HashMap<String,Integer> map=new HashMap<>(); map.put("zhangsan",1); map.put("lisu",2);
  • 因此对HashMap排序的掌握很重要。 HashMap排序有两个步骤: 一.通过map.entrySet()方法获取键值对;并将键值对传递给链表list; 二.自定义比较器来使用Collections.sort()方法排序链表。 Co...
  • //import java.util.HashMap; //import java.util.Map; import java.util.*; public class tst { public static void main(String[] args) { Map<Character, Integer> a = new HashMap<Character, ...
  • Java 将HasMap按照value进行排序

    千次阅读 2021-11-29 11:29:25
    HashMap按照value的数量从小到大进行排序,输出为LinkedHashMap public static LinkedHashMap<String, Integer> sortMap(Map<String, Integer> map) { LinkedHashMap<String, Integer> ...
  • 如果存在多个数字二进制中 1 的数目相同,则必须将它们按照数值大小升序排列。请你返回排序后的数组。示例1:输入:arr = [0,1,2,3,4,5,6,7,8] 输出:[0,1,2,4,8,3,5,6,7] 解释:[0] 是唯一一个有 0 个 1 的数。 [1,...
  • 下面的方法是将nums里的元素频率最高的前k个元素存放到List里返回 public List<Integer>... HashMap<Integer, Integer> map = new HashMap<>(); for (int i : nums) { int count = m...
  • C++map按value排序

    千次阅读 2018-11-15 23:26:29
    map默认是按key值从小到大排序的,先改为按value排序。 基本思路就是:想直接用sort排序是做不到的,sort只支持数组、vetctor等的排序,所以我们可以先把map装进pair里,然后再放入vector,自定义sort实现排序 #...
  • 前言HashMap的储存是没有顺序的,而是按照key的HashCode实现.key=手机品牌,value=价格,这里以这个例子实现按名称排序和按价格排序.Map phone=new HashMap();phone.put("Apple",7299);phone.put("SAMSUNG",6000);phone...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 62,974
精华内容 25,189
热门标签
关键字:

hashmap按照value大小排序