Java - Comparación 2 Vectores tipo String de diferente tamaño

 
Vista:
sin imagen de perfil
Val: 18
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Comparación 2 Vectores tipo String de diferente tamaño

Publicado por Vicente (11 intervenciones) el 10/09/2019 22:19:38
hola, he buscado la forma de comparar dos vectores string de diferente tamaños y todos me dan el mismo codigo y esta bien. Lo que no entiendo o necesito que me den ideas es como solo escoger al valor que no es igual y colocarlo en otro vector. y caso de que los dos vectores sean completamente iguales no pase nada

este es el codigo que he encontrado en todos lados: la ayuda que necesito es como hacer para que al terminar de realizar la comparacion de todo el vector con un valor del otro vector. en caso de que sean iguales no haga nada. pero si son diferentes seleccione el valor que es diferente y solo ese valor lo guarde en otro vector

todos en tipo String


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
String[] IP_NV = new String[4];
 
IP_NV[0] = "Jose";
IP_NV[1] = "Pedro";
IP_NV[2] = "Juan";
IP_NV[3] = "Rafael";
 
String[] IP_NA = new String[5];
 
IP_NA[0] = "Jose";
IP_NA[1] = "Pedro";
IP_NA[2] = "Juan";
IP_NA[3] = "Rafael";
IP_NA[4] = "Vicente";
 
for (int x=0;x <IP_NA.length;x++){
    for (int y=0;y<IP_NV.length;y++){
 
        if (IP_NA[x].equals(IP_NV[y])) {
            System.out.println(IP_NV[y]+" igual a "+IP_NA[x]);
        }else{
            System.out.println(IP_NV[y]+" no igual a "+IP_NA[x]);
        }
    }
}
 
}
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de Kabuto
Val: 3.428
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Comparación 2 Vectores tipo String de diferente tamaño

Publicado por Kabuto (1381 intervenciones) el 11/09/2019 01:46:42
Yo diría que ese código no es correcto.

tu código lo que hace es coger el primer elemento del array IP_NV (por cierto, nombres así no tienen sentido) y compararlo con TODOS los elementos del otro array, uno por uno.
Luego repite la operación con el segundo elemento, y de nuevo lo compara con TODOS los elementos del otro array.
Y así sucesivamente.

Por lo tanto, TODOS los elementos unas veces te dirá que sí son iguales, y otras muchas te dirá que no son iguales, que son DIFERENTES.
Así que, el programa va a determinar que TODOS son DIFERENTES.

No tengo el enunciado de tu ejercicio así que no se exactamente que está pidiendo, pero yo supongo que lo que pide es que compares el PRIMER elemento de un array con el PRIMER elemento, y solo el primero, del otro array.
Luego el SEGUNDO elemento de un array, con el SEGUNDO, y solo segundo, elemento del otro.
Lo mismo con el TERCERO, CUARTO, etc..

Sobre recoger las DIFERENCIAS, puesto que estás usando arrays/vectores simples ESTÁTICOS, hay que crear un tercer vector para las DIFERENCIAS y hay que darle desde inicio un tamaño fijo.
Esto sería más sencillo si usásemos otros tipo de colecciones DINÁMICAS, que no hay que darles un tamaño fijo inicial.

Sin el enunciado no puedo saber si tenemos que coger lo que es diferente del segundo vector, del primero o de ambos.

Es decir, comparo "Jose"(del primer vector) con "Ramon"(del segundo vector)
Son distintos, tengo DOS diferencias, ¿cuál meto en el vector de diferencias? ¿ A Jose? ¿ A Ramon? ¿ A los dos?

Para decidir que tamaño tendrá el vector de diferencias, es necesario aclarar esto previamente.
Así que si es posible, publica el enuciado original del ejercicio.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar
sin imagen de perfil
Val: 18
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Comparación 2 Vectores tipo String de diferente tamaño

Publicado por Vicente (11 intervenciones) el 11/09/2019 15:31:30
hola ese mismo es el problema todos los compara con todos y solo una vez me da que son iguales, ahora como dices comparar el primero con el primero, el segundo con el segundo de cada vector eso lo haria asi:

1
2
3
4
5
6
7
for (int y=0;y<IP_NV.length;y++){
 
        if (IP_NA[y].equals(IP_NV[y])) {
            System.out.println(IP_NV[y]+" igual a "+IP_NA[y]);
        }else{
            System.out.println(IP_NV[y]+" no igual a "+IP_NA[y]);
        }

el problema es que no se como plantear el enunciado, seria algo asi: teniendo 2 vectores "String" (A y B) de diferentes tamaños pero con sus contenidos casi iguales (nombres) hacer la comparación entre ellos de tal forma que si al menos un nombre del vector A sea similar a algun nombre en cualquier posicion del vector B sea valido y lo guarde en un vector C y mientras que si al comparar un nombre del vector A no es igual a ninguno del vector B se guardara en el otro vector D.


no se si se entienda el enunciado, espero que me ayudes porfavor dandome ideas de como hacerlo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Billy Joel
Val: 2.665
Oro
Ha mantenido su posición en Java (en relación al último mes)
Gráfica de Java

Comparación 2 Vectores tipo String de diferente tamaño

Publicado por Billy Joel (876 intervenciones) el 11/09/2019 17:53:03
Creo que lo que necesitas es un método como este:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
public static String[] getElementsNotIn(String[] a, String[] b) {
    String[] r = null;
    String s = "";
    boolean isIn;
    //Evaluamos el arreglo a dentro de b
    for (String x : a) {
        isIn = false;
        for (String y : b) {
            if (x.equalsIgnoreCase(y)) {
                isIn = true;
                break;
            }
        }
        if (!isIn) {
            s += x + ";";
        }
    }
    //Evaluamos el arreglo b dentro de a
    for (String x : b) {
        isIn = false;
        for (String y : a) {
            if (x.equalsIgnoreCase(y)) {
                isIn = true;
                break;
            }
        }
        if (!isIn) {
            s += x + ";";
        }
    }
    /**
     * Si se encontraron elementos que están en un arreglo que no está en el
     * otro entonces se genera el arreglo a devolver
     */
    if (!s.isEmpty()) {
        r = s.split(";");
    }
    return r;
}

Entonces en tu método principal lo implementarías así:
1
2
3
4
5
6
7
8
9
String[] ip_vn = {"Jose", "Pedro", "Michael", "Juan", "Rafael"};
String[] ip_va = {"Jose", "Pedro", "John", "Juan", "Vicente", "Rafael"};
 
String[] r = getElementsNotIn(ip_vn, ip_va);
if (r != null) {
    for (int i = 0; i < r.length; i++) {
        System.out.println(i + ": " + r[i]);
    }
}

Saludos,
Billy Joel
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
1
Comentar