Comparando String (índice) [duplicado]

Jan 12 2021

como comparar duas matrizes com índice exato, por exemplo

String[] test1 = {"a","b","c","d"};
String[] test2 = {"a","b","c",""};

Eu tentei isso

for (int i = 0; i < test1.length; i++) {
for (int j =  i; j < test2.length; j++) if (i==j)  if (i == j && test2[j] == "" ) {do stuff}
} 

// but always give true

agora, se a comparação começar no índice 0 para teste1, ela deve ser comparada apenas com o índice 0 para teste2. Eu quero encontrar o índice vazio (por exemplo, índice 3 para teste2 que está relacionado ao teste1 índice 3) e fazer algumas coisas

Eu leio muito, mas tenho algumas dificuldades, desde já agradeço.

Respostas

Pieter12345 Jan 12 2021 at 22:04

Pelo que entendi, você deseja comparar duas matrizes que podem não ter o mesmo tamanho e, se não forem, comparar apenas até o menor tamanho? Você pode fazer algo assim:

boolean equals = true;
for(int i = 0; i < test1.length && i < test2.length; i++) {
    if(!test1[i].equals(test2[i])) {
        equals = false;
        break;
    }
}
Spectric Jan 12 2021 at 22:02

Use .equals()para comparar Strings. ==é usado para comparar primitivas.

Também não há necessidade de 2 loops.

for(int i = 0; i < test1.length; i++){
    if(test1[i].equals("")||test2[i].equals(""){
        //Do something
    }
}
pabloespinosa12 Jan 12 2021 at 22:03

Ao comparar Strings em Java, você deve usar EQUALS, pois são objetos. Além disso, não há nenhum ponto em dois loops. Apenas tente isto:

for (int i = 0; i < test1.length; i++) {
    if (test2[i].equals("") ) {do stuff}
}
NehaK Jan 12 2021 at 22:52

Use deepEquals () de Arrays.java:

  import java.util.Arrays;

  String[][] s1 =
        {
            {"A", "B", "C"},
            {"X", "Y", "Z"}
        };
 
 String[][] s2 =
        {
            {"A", "B", "C"},
            {"X", "Y", "Z"}
        };
 
 System.out.println("deepEquals() returns " + Arrays.deepEquals(s1, s2));

Resultado: deepEquals () retorna verdadeiro