Lista em Java

3 respostas
java
G

Olá, procurei no Tio Google e não achei algo que pudesse me auxiliar (Nao procurei direito?).

Eu preciso construir um método que recebe uma lista encadeada de números inteiros e retorna uma lista sem repetições, ou seja, uma lista onde cada número apareça apenas uma vez. Exemplo:

Entrada : 8 9 -7 1 4 5 9 -7 1

Saída : 8 9 -7 1 4 5

Algúem poderia me ajudar, de uma forma simples?

Desde ja obrigado

3 Respostas

Weverton_Reis

Bom dia Gabriel,

Da uma olhada na interface Set do Java:

https://docs.oracle.com/javase/7/docs/api/java/util/Set.html

Eslley

Eu tinha feito assim:

public static void main(String[] args) {
            //lista original
            int[] orig=new int[10];
            Scanner entrada=new Scanner(System.in);
            
            //recebe 10 valores do usuário
            for (int cont = 0; cont < orig.length; cont++) {
                System.out.println("Digite o número:");
                int v=entrada.nextInt();
                orig[cont] = v;
            }        
            //cria uma lista de string que contem 0 para os valores repetidos
            //e null para os valores únicos
            String[] novao = new String[10];
            for (int varray = 0; varray < orig.length; varray++) {
                for (int us = varray + 1; us < orig.length; us++) {
                    if (orig[varray] == orig[us]) {
                        novao[us] = "0";
                    }
                }
            }
            //para saber quantas posiçoes terá o
            //novo vetor
            int qpo=0;
            for (int i=0;i<novao.length;i++){
                if (novao[i]==null){
                    qpo++;
                }
            }
            int[] novovetor=new int[qpo];       
            //adiciona os valores não repetidos a nova lista
            int emqadd=0;
            for (int i=0;i<novao.length;i++){
                if (novao[i]==null){
                    novovetor[emqadd]=orig[i];
                    emqadd++;
                }
            }       
            System.out.println("Vetor antigo:");
            for (int i = 0; i < orig.length; i++) {
                System.out.println(orig[i]);
            }
            System.out.println("Novo vetor:");
            for (int i=0;i<novovetor.length;i++){
                System.out.println(novovetor[i]);
            }
        }
G

Opa, muito obrigado aos dois, foi muito util, utilizei o set, mas foi bom ver o codigo do Eslley, me ajudou em algumas duvidas tbm. Obrigado

Criado 18 de setembro de 2016
Ultima resposta 19 de set. de 2016
Respostas 3
Participantes 3