colecciones Mapa de tipo Java

colecciones Mapa de tipo Java

 

comparador interfaz implementada, comparar método de reescritura, Organización personalizada completa

int comparar (o1 objeto, o2 Object ) devuelve un tipo base número entero
en el orden ascendente, entonces el menos de o2 o1, devuelve -1 (negativo), es igual a 0,01 de más de 02 retorno 1 retorno (positivo)
si de acuerdo con en orden descendente, es menos de o1 o2, devoluciones 1 (un número positivo), es igual a 0,01 de mayor que 02 devuelve -1 (negativos)

 

Uso ejemplo:

java.util.ArrayList importación; 
java.util.Collections de importación; 
java.util.Comparator importación; 
java.util.HashMap importación; 
java.util.List importación; 
java.util.Map importación; 
java.util.Map.Entry importación; 

public class MapSort { 

	void main (String [] args) {public static 
		sortMap (); //测试Mapa排序
	} 
	
	public static Map <String, doble> sortMap () { 
		Map <String, doble> mapa = new HashMap <String, doble> (); 
		map.put ( "100M", (doble) 100); 
		map.put ( "10M", (doble) 10); 
		map.put ( "1000G", (doble) 1.000.000); 
		map.put ( "10G", (doble) 10 000); 
		map.put ( "100T", (doble) 100 000 000); 
		map.put ( "10T",
		map.put ( "1T", (doble) 1.000.000); 
		
	   Lista <Map.Entry <String, Double >> list = new ArrayList <Map.Entry <String, Double >> (map.entrySet ()); 
	   System.out.println ( "排序前:" + lista); 
           Collections.sort (lista, nueva Comparador <Map.Entry <String, Double >> () { 
            //从大到小
			@Override 
			public int comparar (Entrada <String, doble> o1, la entrada <String, doble> O2) { 
				
				si (o1.getValue ()> o2.getValue ()) { 
					return -1; 
				} else if (. o1.getValue () es igual a (o2.getValue ())) { 
					. cadena str1 = o1.getKey () subcadena ( .. o1.getKey () longitud () - 1, o1.getKey () longitud ()); 
					. cadena str2 = o2.getKey (.) subcadena (o2.getKey () longitud () - 1, o2.getKey ( ).longitud());
					// Debido a que la definición del tipo de envase doble, al comparar la igualdad de necesidad es igual a, se utiliza la comparación de direcciones == objeto 
					SI (str1.equals (str2)) { 
						return 0; 
						
					// el mismo valor, comparando es la unidad, el orden descendente unidad T> G> M
					} else if ((str1.equals ( "T") && str2.equals ( "G")) || (str1.equals ( "T") && str2.equals ( "M")) || (str1.equals ( "G") && str2.equals ( "M"))) { 
						return -1; 
					} else { 
						return 1; 
					} 
				} Else { 
					return 1; 
				} 
			} 

        }); 
        System.out.println ( "排序后(从大到小):" + lista); 
		
     Mapa de retorno; } }

  

Los resultados:

Antes de ordenar: [1000G = 1000000.0, 1T = 1000000.0, 100T = 1.0E8, 10T = 1.0E7, 10G = 10000.0, 100M = 100,0, 10M = 10,0] 
ordenadas (descendente): [100T = 1.0E8, 10T = 1.0E7, 1T = 1000000.0, 1000G = 1000000.0, 10G = 10000.0, 100M = 100,0, 10M = 10,0]

  

Supongo que te gusta

Origin www.cnblogs.com/DFX339/p/12449970.html
Recomendado
Clasificación