Java Map Sort sortMapByValue(Map map, Comparator> valueComparator)

Here you can find the source of sortMapByValue(Map map, Comparator> valueComparator)

Description

Creates a new sorted map, based on the values from the given map and Comparator.

License

Open Source License

Parameter

Parameter Description
map the map which needs to be sorted
valueComparator the Comparator

Return

a new sorted map

Declaration

public static <K, V> Map<K, V> sortMapByValue(Map<K, V> map, Comparator<Entry<K, V>> valueComparator) 

Method Source Code

//package com.java2s;
/*/*from ww  w. java 2 s .co  m*/
 * Copyright (C) 2005-2014 Alfresco Software Limited.
 *
 * This file is part of Alfresco
 *
 * Alfresco is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Lesser General Public License as published by
 * the Free Software Foundation, either version 3 of the License, or
 * (at your option) any later version.
 *
 * Alfresco is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public License
 * along with Alfresco. If not, see <http://www.gnu.org/licenses/>.
 */

import java.util.Collections;
import java.util.Comparator;

import java.util.LinkedHashMap;
import java.util.LinkedList;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;

public class Main {
    /**
     * Creates a new sorted map, based on the values from the given map and Comparator.
     * 
     * @param map the map which needs to be sorted
     * @param valueComparator the Comparator
     * @return a new sorted map
     */
    public static <K, V> Map<K, V> sortMapByValue(Map<K, V> map, Comparator<Entry<K, V>> valueComparator) {
        if (map == null) {
            return Collections.emptyMap();
        }

        List<Entry<K, V>> entriesList = new LinkedList<>(map.entrySet());

        // Sort based on the map's values
        Collections.sort(entriesList, valueComparator);

        Map<K, V> orderedMap = new LinkedHashMap<>(entriesList.size());
        for (Entry<K, V> entry : entriesList) {
            orderedMap.put(entry.getKey(), entry.getValue());
        }
        return orderedMap;
    }
}

Related

  1. sortMap(Map map, Comparator> compator)
  2. sortMapByKey(Map data)
  3. sortMapByKey(Map map)
  4. sortMapByValue(Map input, final boolean desc)
  5. sortMapByValue(Map map, Comparator comparator)
  6. sortMapByValue(Map map, Comparator> comparator)
  7. sortMapByValue(Map map, final boolean descending)
  8. sortMapByValue(Map oriMap)
  9. sortMapByValue(Map unsortMap, boolean highFirst)