Mapa de Java están ordenadas según la clave y el valor de código de prueba

Mapa de Java están ordenadas según la clave y el valor de código de prueba

1, la clave de ordenación (ordenar por llave)

Usando TreeMap <K, V>, TreeMap (Comparador <? Súper K> comparador) que pasa a nuestro comparador de clasificación clave personalizada se puede realizar a su constructor.

2, ordenados por valor (ordenar por valor)

Principio: Mapa todos los elementos para realizar la clasificación se colocan en una lista, seguido de un método estático se utiliza para ordenar las colecciones lista ordenada se define por la misma comparación para comparar (List <T> lista, Comparador c <? Super T>) reglas. La lista ordenada de elementos y luego se convierten en el mapa, con el fin de afirmar el orden de los elementos en la lista de mapas después de ordenar los elementos para asegurar el uso consistente del tipo de datos LinkedHashMap.

Ejemplo de código completo:

package com.swordfall.invoking;

import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Iterator;
import java.util.LinkedHashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.TreeMap;

public class testmap {
	
//MAP按key,value排序	


	    public static void main(String[] args) {

	        Map<String, String> map = new TreeMap<String, String>();

	        map.put("pageNum", "2");
	        map.put("pageSize", "50");
	        map.put("username", "test");
	        map.put("uaerkey", "123");

	        Map<String, String> resultMap = sortMapByKey(map);    //按Key进行排序
	        System.out.println(resultMap.toString()); 
	        for (Map.Entry<String, String> entry : resultMap.entrySet()) {
	            System.out.println(entry.getKey() + " " + entry.getValue());
	        }
	        
	        
	        Map<String, String> resultMap1 = sortMapByValue(map); //按Value进行排序

	        for (Map.Entry<String, String> entry : resultMap1.entrySet()) {
	            System.out.println(entry.getKey() + " " + entry.getValue());
	        }
	    }
	    
	    /**
	     * 使用 Map按key进行排序
	     * @param map
	     * @return
	     */
	    public static Map<String, String> sortMapByKey(Map<String, String> map) {
	        if (map == null || map.isEmpty()) {
	            return null;
	        }

	        Map<String, String> sortMap = new TreeMap<String, String>(
	                new MapKeyComparator());

	        sortMap.putAll(map);

	        return sortMap;
	    }

	    /**
	     * 使用 Map按value进行排序
	     * @param map
	     * @return
	     */
	    public static Map<String, String> sortMapByValue(Map<String, String> oriMap) {
	        if (oriMap == null || oriMap.isEmpty()) {
	            return null;
	        }
	        Map<String, String> sortedMap = new LinkedHashMap<String, String>();
	        List<Map.Entry<String, String>> entryList = new ArrayList<Map.Entry<String, String>>(
	                oriMap.entrySet());
	        Collections.sort(entryList, new MapValueComparator());

	        Iterator<Map.Entry<String, String>> iter = entryList.iterator();
	        Map.Entry<String, String> tmpEntry = null;
	        while (iter.hasNext()) {
	            tmpEntry = iter.next();
	            sortedMap.put(tmpEntry.getKey(), tmpEntry.getValue());
	        }
	        return sortedMap;
	    }
 
	    
	    

}
	//按key的比较器类 
	class  MapKeyComparator implements Comparator<String>{

	    @Override
	    public int compare(String str1, String str2) {
	        
	        return str1.compareTo(str2);
	    }
	}
        //按value的比较器类 
	class MapValueComparator implements Comparator<Map.Entry<String, String>> {

	    @Override
	    public int compare(Entry<String, String> me1, Entry<String, String> me2) {

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

salida:


Nota: El ejemplo real, eliminando Un desconcertado.

           - no pensar entre el final, el tiempo real de la crítica de su trabajo!

Publicado 26 artículos originales · alabanza ganado 30 · vistas 3539

Supongo que te gusta

Origin blog.csdn.net/ydyuse/article/details/104936992
Recomendado
Clasificación