Como verificar se todos os elementos de uma array são iguais?

 exemplo:

   String[] nome = {"java", "java", "java"};
  
    for (int i = 0 ; i < nome.length; i++) {
        if (nome[i].equals(nome[i+1])){
            JOptionPane.showMessageDialog(null, "Elemento "+ i +" iqual!!!");
        }
    }

Isso é uma pergunta ou um exemplo? Se é uma pergunta, qual a dúvida exatamente?

O objetivo é saber se todos os elementos são iguais ou saber os conjuntos de elementos repetidos?

Abraço.

Se eu entendi bem, vc quer saber se todos os elementos de um array são iguais, então;

String[] nome = {"java", "java", "java"};

String primeiroElemento = null;
boolean tudoIgual = true;
  
    for (int i = 0 ; i < nome.length; i++) {
        if (i == 0){
             primeiroElemento = nome[i];
        }
        if (!nome[i].equals(primeiroElemento)){
            tudoIgual = false;
        }
    }

if (tudoIgual){
   System.out.println("Todos os elementos são iguais!");
}else{
   System.out.println("Existem elementos diferentes do primeiro elemento");
}
2 curtidas

Umas otimizações:

String[] nome = {"java", "java", "java"};

String primeiroElemento = nome[0]; // já pega o primeiro antes do for
boolean tudoIgual = true;
  
    for (int i = 1; i < nome.length; i++) { // já temos o elemento zero, então o for pode começar em 1
        if (!nome[i].equals(primeiroElemento)){
            tudoIgual = false;
            break; // sai do loop, já achamos um elemento diferente, não precisa continuar
        }
    }

if (tudoIgual){
   System.out.println("Todos os elementos são iguais!");
}else{
   System.out.println("Existem elementos diferentes do primeiro elemento");
}

Abraço.

1 curtida

me parece que esse código vai dar IndexOutOfBoundsException na última iteração.
se for o caso, coloca ;i < nome.length -1;

1 curtida

Obrigado, gente pelos exemplos!!

Mas assim, acabar não verificando o ultimo elemento do array???

Para entender vetores, você precisa saber que:
Um vetor de 5 posições conterá 5 “casas” onde os valores serão armazenados.
Cada “casa” é numerada, começando-se por 0 e indo até a última casa que terá como número sempre o resultado da expressão vetor.length - 1. Assim sendo, um vetor de 5 posições possui casas numeradas de 0 (início) a 4 (5 - 1).
Logo, quando você faz:
for (int i = 0; i < nome.length;i++){
você está dizendo que irá entrar em todas as casas do vetor, sempre que o valor da variável i for menor que o tamanho do vetor. Em suma, ele irá "passar’ por todas as “casas”, da número 0 até a length - 1.

2 curtidas

ele vai fazer penultimo.equals(ultimo)
Não tem necessidade de fazer mais que isso.
Para ver melhor, sugiro que vc aprenda a usar o debug. Fica mais fácil de perceber esse tipo de coisa.

1 curtida

Obrigado pela dica Andre!!!

Ou usar o Set pra eliminar todos os repetidos e verificar o size

public class Test {
 
  public static void main(String[] args) {
    String[] nomes = {"java", "java", "java"};
    
    if (isTodosElementosIguais(nomes)) {
    	System.out.println("Todos elementos sao iguais");
    } else {
        System.out.println("Os elementos nao sao todos iguais");
    }
  }
  
  public static boolean isTodosElementosIguais(String[] lista) {
  	return new HashSet<String>(Arrays.asList(lista)).size() == 1;
  }
}
1 curtida