La clasificación basada en el tipo de otra matriz

Tusriyer:

Tengo una lista de arreglos de cuerda totalVals. Cada entrada totalValses una cadena namey un doble loc, que está unido en una sola cadena antes de que se inserta en la lista de arreglos como:

totalVals.add(name + "," + loc);

Esta es la forma en que me dan los datos. He separado los valores en una matriz de cadenas y doble como sigue:

String[] temp;
String[] names = new String[totalVals.size()];
double[] locs = new double[totalVals.size()];

for (int i = 0; i < totalVals.size(); I++){
    temp = totalVals.get(i).splot(",");
    names[i] = temp[0];
    locs[i] = Double.parseDouble(temp[1]);
}

Ahora, sin embargo, quiero ordenar los datos y ponerlo de nuevo en la lista de arreglo antes de regresar. Quiero que los locsdatos estén en orden descendente, lo que puedo hacer utilizando Arrays.sort(locs, Collections.reverseOrder());. Pero no sé cómo ordenar namesde manera que los nombres todavía están asociados a los mismos lugares que eran originalmente.

Ejemplo de totalVals: {"Bahamas,32.2233","Zimbabwe,82.2443","India,56.2355","Australia,24.4363"}

Se dividiría en:

names = {"Bahamas","Zimbabwe","India","Australia"};
locs = {32.2233,82.2443,56.2355,24.4363};

Que luego serían ordenados a:

names = {"Zimbabwe","India","Bahamas","Australia"};
locs = {82.2443,56.2355,32.2233,24.4363};

Entonces, ¿cómo iba yo a continuación, ordenar las dos matrices de tal manera que las asociaciones en el índice ien ambas matrices siguen siendo los mismos?

Consorcio inactivo :

En lugar de romper el ArrayList en dos matrices diferentes y clasificación por separado, el tipo ArrayListbasado en un valor doble en orden descendente y luego romper ArrayList en dos matrices

 List<String> list = new ArrayList<>();
    list.add("Bahamas,32.2233");
    list.add("Zimbabwe,82.2443");
    list.add("India,56.2355");
    list.add("Australia,24.4363");

   List<String> result = list.stream().sorted((a,b)->b.substring(b.lastIndexOf(",")+1).compareTo(a.substring(a.lastIndexOf(",")+1))).collect(Collectors.toList());

 System.out.println(result);  //[Zimbabwe,82.2443, India,56.2355, Bahamas,32.2233, Australia,24.4363]

lista Rompiendo en una matriz doble [] y String [] array

double[] arr = result.stream().mapToDouble(i->Double.parseDouble(i.substring(i.lastIndexOf(",")+1))).toArray();
   System.out.println(Arrays.toString(arr)); // [82.2443, 56.2355, 32.2233, 24.4363]

String[] countries = result.stream().map(i->i.substring(0, i.lastIndexOf(","))).toArray(String[]::new);
   System.out.println(Arrays.toString(countries)); //[Zimbabwe, India, Bahamas, Australia]

Antes de java 8 versiones

Mediante el uso de `Collections.sort () con el comparador de encargo, y luego dividir la lista en dos matrices diferentes

 Collections.sort(list, new Comparator<String>() {

    @Override
    public int compare(String o1, String o2) {

        return o2.substring(o2.lastIndexOf(",")+1).compareTo(o1.substring(o1.lastIndexOf(",")+1));
    }
});
 System.out.println(list); //[Zimbabwe,82.2443, India,56.2355, Bahamas,32.2233, Australia,24.4363]

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=196882&siteId=1
Recomendado
Clasificación