java map按照value值来比较大小并且返回最终结果

package com.zuidaima.util;  

import java.util.Comparator;
import java.util.HashMap;
import java.util.Map;
import java.util.TreeMap;  

public class ValueComparator implements Comparator<Long> {  

    Map<Long, Double> base;  

    public ValueComparator(Map<Long, Double> base) {
        this.base = base;
    }  

    public int compare(Long a, Long b) {
        if (base.get(a).doubleValue() >= base.get(b).doubleValue()) {
            return -1;
        } else {
            return 1;
        }
    }  

    public static <K, V extends Comparable<V>> Map<K, V> sortByValues(
            final Map<K, V> map) {
        Comparator<K> valueComparator = new Comparator<K>() {
            public int compare(K k1, K k2) {
                int compare = map.get(k2).compareTo(map.get(k1));
                if (compare == 0)
                    return 1;
                else
                    return compare;
            }
        };
        Map<K, V> sortedByValues = new TreeMap<K, V>(valueComparator);
        sortedByValues.putAll(map);
        return sortedByValues;
    }  

    public static void main(String[] args) {
        HashMap<Long, Double> map = new HashMap<Long, Double>();
        map.put(1l, 99.5);
        map.put(2l, 67.2);
        map.put(3l, 67.5);
        map.put(4l, 67.6);  

        ValueComparator bvc = new ValueComparator(map);
        TreeMap<Long, Double> sorted_map = new TreeMap<Long, Double>(bvc);  

        System.out.println("unsorted map: " + map);  

        sorted_map.putAll(map);  

        System.out.println("results: " + sorted_map);  

        Map<Long, Double> sorted_map2 = sortByValues(map);  

        System.out.println("results2: " + sorted_map2);
    }
}

输出结果:

unsorted map: {1=99.5, 2=67.2, 3=67.5, 4=67.6}

results: {1=99.5, 4=67.6, 3=67.5, 2=67.2}

results2: {1=99.5, 4=67.6, 3=67.5, 2=67.2}

通过key比较大小的原理类似,大家改写下就好了。enjoy it。

原文:http://www.zuidaima.com/share/1830834176347136.htm

查看本栏目更多精彩内容:http://www.bianceng.cnhttp://www.bianceng.cn/Programming/Java/

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索map
, return
, compare
, comparator
, public
, base
, java Map
hashmap原理
map根据value大小排序、map根据key获取value、遍历map的key和value、map.put key value、获取map的key和value,以便于您获取更多的相关知识。

时间: 2024-10-30 08:42:35

java map按照value值来比较大小并且返回最终结果的相关文章

java,比较json中 值的大小 , 返回的是键呢?

问题描述 java,比较json中 值的大小 , 返回的是键呢? [ { "key": "a", "value": 5 }, { "key": "b", "value": 3 }, { "key": "c", "value": 7 } ] 就这种json ,怎么实现比较的是value中的int的值的大小, 而返回的是key 比如

Java Map 集合类简介

集合 java.util 中的集合类包含 Java 中某些最常用的类. 最常用的集合类是 List 和 Map. List 的具体实现包括 ArrayList 和 Vector,它们是可变大小的列表,比较适合构建.存储和操作任何类型对象的元素列表. List 适用于按数值索引访问元素的情形. Map 提供了一个更通用的元素存储方法. Map 集合类用于存储元素对(称作"键"和"值"),其中每个键映射到一个值. 从概念上而言,您可以将 List 看作是具有数值键的 M

java map中遍历和list

问题描述 java map中遍历和list map.put(""k_""+entryt.getKey() list);怎么只输出10条数据 解决方案 Iterator it=map.keySet().iterator();int i=1: while(it.hasNext()){if(i>10){break;}System.out.println(""键:""+it.next()) i++; } 解决方案二: Map&l

Java Map 按key排序和按Value排序的实现方法_java

一.理论准备 Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法. HashMap的值是没有顺序的,它是按照key的HashCode来实现的,对于这个无序的HashMap我们要怎么来实现排序呢?参照TreeM

Java Map 按照Value排序的实现方法_java

Map是键值对的集合接口,它的实现类主要包括:HashMap,TreeMap,Hashtable以及LinkedHashMap等. •TreeMap:基于红黑树(Red-Black tree)的 NavigableMap 实现,该映射根据其键的自然顺序进行排序,或者根据创建映射时提供的 Comparator 进行排序,具体取决于使用的构造方法. •HashMap的值是没有顺序的,它是按照key的HashCode来实现的,对于这个无序的HashMap我们要怎么来实现排序呢?参照TreeMap的va

java对象中属性值为空字符串的问题

问题描述 java对象中属性值为空字符串的问题 业务逻辑中需要将对象中为空字符串的属性转换为null,首先我想到是将对象转为一个数组, 然后遍历数组,将""转为 null ,不过这样应该不对,大家给个思路 解决方案 用 反射 获得所有字段的数组,然后遍历判断~~~~~~ 解决方案二: 你为什么还要遍历呢,你前台传过来的数据先处理再装对象,这样才对 解决方案三: 传到后台后,先判断 if("".eques(name)){ name=null; } object.set

Java语言入门教程(九):Java语言中的值传递

在第八篇博文中,介绍了编写方法体必须了解的基本知识点,初学者已经可 以自己写简单的例子进行练习.在练习过程中,我们不可能把所有的代码都放在 main方法中,Java类一定会有或多或少的方法成员,调用这些方法将是必要的步 骤.而调用方法成员时,如果该方法有参数,就必须要传递实际参数给方法的形 式参数.所以了解Java语言中的值传递是非常必要的. Java中的数据类型分两种,基本数据类型和引用类型.所以本文中也将分别 对这两种数据类型的值传递特征进行介绍. 1.基本数据类型的值传递:基本数据类型传递

java Map容器怎么定量输出,即当容器到达一定量后输出数据到文件

问题描述 java Map容器怎么定量输出,即当容器到达一定量后输出数据到文件 由于放进Map容器数据量很大,一次性放入的话会导致堆溢出,假如有1010万条记录,如何限制Map的输出记录数,当Map里存放有100万条记录时就输出到文件,依此类推,第11次把最后剩余的10万条也输出到文件. 解决方案 map本身似乎没有这种功能,它就一个容器,怎么会考虑你这特殊的需求.你自己用代码实现吧.内存溢出的话,你可以试试给虚拟机加一下参数,指定最小内存.另外你那个功能的实现我觉得用map实现不见得很好.可以

java map转json字符串

问题描述 java map转json字符串 使用dom4j解析xml后,写了一周总是出现各种bug,最后终于找到原因了,原来是JsonObject转换的内部有过滤.最后写成map格式.但不知道怎么把map转成json. ps:本来打算使用正则替换,看了看,难度太大了 解决方案 用StringWriter 然后再用 ObjectMapper 里面的writevalue()方法 进行 替换 解决方案二: 网上收个转json的jar包,都支持map转json 解决方案三: 用谷歌的gson包直接转 解