Comparar índices de um único Array

2 respostas
java
D

Olá galera!
Eu precisa de um programa que tivesse como saída quais índices de um array [30] são iguais. Consigo comparar os índices com um for, mas não estou sabendo guardar quais os índices iguais. Eu ainda não sei mexer com ArrayList, então, se possível, teria como mostrar uma alternativa? Caso só haja essa possibilidade, como ficaria?
Agradeço desde já!

2 Respostas

S

índices de array’s nunca podem ser iguais, pois ele demonstram a posição dos elementos no array, se você fala do conteúdo do array, por exemplo um array de int, e você quer comparar a igualdade desses int’s, você terá de ter 2 for um dentro do outro onde, o de fora pega o primeiro índice, e o de dentro passa todo o array procurando a igualdade, quando encontrado você pode guardar em um segundo Array, no qual vai adicionando os indices com valor iguais.

W

ArrayList facilitaria a solução, mas não é necessário, há alternativas sim.

public class Test {
  public static void main(String... args) {
    /*
     * Vamos criar 2 arrays de apenas 6 elementos
     * para propósito de testes, OK?
     */
    int[] array1 = { 123, 456, 789, 321, 654, 987 };
    int[] array2 = { 123, 789, 987, 111, 222, 333 };
    
    /*
     * Criamos um terceiro array do mesmo tamanho dos
     * outros 2.
     */
    int[] array3 = new int[ array1.length ];
    
    /*
     * index nos ajudará a manter o controle de
     * quantos números iguais foram encontrados.
     */
    int index = 0;
    
    /*
     * Pegamos cada elemento de array1
     */
    for ( int a1: array1 )
      /*
       * ... E comparamos com cada elemento de array2
       */
      for (int a2: array2)
        /*
         * ... Se um dado elemento de array1 for igual
         * a um dado elemento de array2, então guardamos
         * este "elemento igual" em um dos indices de array3
         * e aproveitamos pra incrementar index, o que nos
         * ajudará a nunca armazenar um valor em um indice
         * já ocupado em array3.
         */
        if ( a1 == a2 ) array3[ index++ ] = a1;
    
    /*
     * Apesar de array3 ter length igual a 6 neste
     * exemplo, com a ajuda de index conseguimos
     * imprimir apenas os números que descobrimos
     * que aparecem em array1 e array2.
     */
    for ( int i = 0; i < index; i++ )
      System.out.println( array3[ i ] );
  }
}

Aproveitando a oportunidade, sugiro que estude o ArrayList, é fácil. Para instanciá-lo você faria assim:

/*
 * O nome entre <Seu_Tipo_Aqui> representa o tipo de dados que será
 * armazenado no ArrayList.
 */
ArrayList<String> myArrayList = new ArrayList<String>();

/*
 * Você pode omitir o tipo de dado na instanciação do ArrayList
 */
ArrayList<Boolean> myArrayList = new ArrayList<>();

/*
 * Não é possível criar ArrayList de tipos primitivos,
 * para isso você tem que usar o tipo referencia que
 * representa o primitivo que quer. Isso daria erro:
 *
 * ArrayList<int> myArrayList = new ArrayList<>();
 *
 * Mas isso é completamente possível:
 */
ArrayList<Integer> myArrayList = new ArrayList<>();

Para adicionar um novo elemento é só usar o método add.

myArrayList.add("Um String Qualquer!");
myArrayList.add("Outra String Aqui");

Use o método size para saber quantos elementos há no array e o resto deixo pra você pesquisar ^^.

Bons estudos!

Criado 21 de março de 2016
Ultima resposta 21 de mar. de 2016
Respostas 2
Participantes 3