Cómo ordenar dos matrices de cadenas

Tengo dos matrices:

arrayA = {"b","c","a"} 
arrayB = {"99","11","22"}

¿Cómo los clasifico juntos para que arrayA = {"a","b","c"}y arrayB = {"22","99","11"}?

Respuesta 1

He hecho un programa de clasificación alfanumérico. Compruébalo.

import java.util.Arrays;
import java.util.Comparator;

public class AlphanumericSorting implements Comparator {
    public int compare(Object firstObjToCompare, Object secondObjToCompare) {
        String firstString = firstObjToCompare.toString();
        String secondString = secondObjToCompare.toString();

        if (secondString == null || firstString == null) {
            return 0;
        }

        int lengthFirstStr = firstString.length();
        int lengthSecondStr = secondString.length();

        int index1 = 0;
        int index2 = 0;

        while (index1 < lengthFirstStr && index2 < lengthSecondStr) {
            char ch1 = firstString.charAt(index1);
            char ch2 = secondString.charAt(index2);

            char[] space1 = new char[lengthFirstStr];
            char[] space2 = new char[lengthSecondStr];

            int loc1 = 0;
            int loc2 = 0;

            do {
                space1[loc1++] = ch1;
                index1++;

                if (index1 < lengthFirstStr) {
                    ch1 = firstString.charAt(index1);
                } else {
                    break;
                }
            } while (Character.isDigit(ch1) == Character.isDigit(space1[0]));

            do {
                space2[loc2++] = ch2;
                index2++;

                if (index2 < lengthSecondStr) {
                    ch2 = secondString.charAt(index2);
                } else {
                    break;
                }
            } while (Character.isDigit(ch2) == Character.isDigit(space2[0]));

            String str1 = new String(space1);
            String str2 = new String(space2);

            int result;

            if (Character.isDigit(space1[0]) && Character.isDigit(space2[0])) {
                Integer firstNumberToCompare = new Integer(Integer
                        .parseInt(str1.trim()));
                Integer secondNumberToCompare = new Integer(Integer
                        .parseInt(str2.trim()));
                result = firstNumberToCompare.compareTo(secondNumberToCompare);
            } else {
                result = str1.compareTo(str2);
            }

            if (result != 0) {
                return result;
            }
        }
        return lengthFirstStr - lengthSecondStr;
    }

    public static void main(String[] args) {
        String[] alphaNumericStringArray = new String[] { "NUM10071",
                "NUM9999", "9997", "9998", "9996", "9996F" };

        Arrays.sort(alphaNumericStringArray, new AlphanumericSorting());

        for (int i = 0; i < alphaNumericStringArray.length; i++) {
            System.out.println(alphaNumericStringArray[i]);
        }

    }

}

Aquí está la salida:

9996 9996F 9997 9998 NUM9999 NUM10071

Respuesta: 2

Uso Arrays.sort(arrayB). Incluso puede suministrar su costumbre Comparatorpara afectar la clasificación.

Respuesta: 3

Este enlace lo ayudará a probar array.sort (Arg); http://www.leepoint.net/notes-java/data/arrays/70sorting.html

Respuesta: 4

Si va a utilizar las mismas letras y solo 1 dígito del 0 al 9, puede ordenarlo de la misma manera que ordenó la primera matriz. Si tiene la intención de agregar más letras con más números, deberá implementar su propio comparador personalizado (suponiendo que el comportamiento predeterminado no sea adecuado para usted).

Respuesta: 5

La respuesta a la pregunta tal como está escrita parece tan obvia que creo que no entendemos lo que realmente está preguntando.

Supongo que lo que realmente está preguntando es cómo ordenar una matriz y reordenar la segunda matriz en función de cómo la ordenación reordenó la primera matriz. (Su ejemplo está mal elegido para ilustrar esto ... pero de hecho lo hace).

Suponiendo que eso es lo que quiere decir, la forma más simple de hacer esto es convertir las dos matrices en una sola matriz de pares, ordenar los pares según el primer campo y luego usar la lista de pares ordenados para repoblar las matrices originales.

El inconveniente (posible) es que el orden total de la segunda matriz es indeterminado si la ordenación no es estable. (O para decirlo de otra manera, si hay duplicados arrayA, entonces el orden relativo de los arrayBelementos correspondientes no se puede predecir). Hay maneras de lidiar con esto.

Respuesta: 6

Hola, estoy desarrollando una aplicación para Android y me pregunto cómo puedo hacer que la aplicación use menos CPU mientras está en segundo plano. Por ejemplo, mi aplicación se detiene una vez que pierde el foco pero el uso de la CPU sigue siendo del 50% Editar ...

¿Existe una forma rápida de generar el poder cartesiano de un conjunto? Por ejemplo, si el conjunto es {1, 2}, entonces {1, 2} x {1, 2} = {(1, 1), (1, 2), (2, 1), (2, 2) }. ¿Cómo podría generarlo para cualquier ...

Quiero obtener la salida de este método myLogger.log (e) en una variable de cadena para poder probar con Junit. myLogger.log (e); Cadena s = ???? afirmar Igual (esperado, s);

¿Cómo solucionar la excepción? ¿No se pudo conectar al host SMTP: localhost, puerto: 25 mientras se envía correo electrónico desde la aplicación Java y cómo usar un número de puerto alternativo para enviar correo que no sea el puerto no: 25?