Java - Evitar repeticion entre dos listas

   
Vista:

Evitar repeticion entre dos listas

Publicado por Alvaro (2 intervenciones) el 15/11/2015 18:35:33
QUISIERA SABER QUE CODIGO PONER PARA EVITAR QUE DOS LISTAS TENGAN LOS MISMOS ELEMENTOS, EN ESTE CASO NUMEROS. EN MI CASO TENGO DOS LISTAS QUE ARROJAN NUMEROS ALEATORIOS, PERO QUIERO EVITAR QUE LOS ELEMENTOS DE LA PRIMERA LISTA NO SE REPITAN EN LA SEGUNDA LISTA.
HE INTENTADO CON EL CODIGO

1
2
3
4
5
for( int i = 0, i<1,i++){
   if(!boliyapa.contains(numerosloteria){
         boliyapa.add(boli.get(i));
    }
}
MI PROYECTO ES DE LOTERIA QUE BOTA 6 NUMEROS Y LA BOLIYAPA, Y LOS 6 NUMEROS QUE ARROJA EL SISTEMA NO QUIERO QUE SE REPITA CON LA BOLIYAPA. AYUDAA!

QUIERO EVITAR ESTO:
NUMEROS: [1,20,15,13,12,5]
BOLIYAPA:[20] <----En este caso el 20 tambien esta en la lista NUMEROS, es lo que quiero evitar
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

Evitar repeticion entre dos listas

Publicado por Javier (2 intervenciones) el 17/11/2015 08:29:50
Bueno por empezar no es algo propio de java sino algoritmico en sí, mi solución para este ejemplo que diste vos es cada vez que agrego un numero a numeros lo elimino de la bolipaya y listo, empezamos con una lista llena de numeros y la otra vacia y no tenés que comparar la lista siempre ( y recorrerla que tiene orden n), se entendio ? espero haber sido de ayuda.
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 Lawliet

Evitar repeticion entre dos listas

Publicado por Lawliet (236 intervenciones) el 17/11/2015 18:15:16
Hola...

Una opción sería usando la clase HashSet, la cual es una lista que no permite repetidos algunos. Te proporciono un ejemplo sencillo.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public static void main(String[] args) {
	HashSet<Integer> set = new LinkedHashSet<Integer>();
	set.add(1);
	set.add(3);
	set.add(4);
	set.add(5);
	set.add(7);
	set.add(9);
	set.add(1);
	set.add(3);
	set.add(2);
	set.add(4);
	set.add(9);
	set.add(6);
 
	for(Integer i : set){
		System.out.println(i);
	}
}

Output
1
3
4
5
7
9
2
6

Esto sería mas fácil a ir recorriendo toda la lista para validar si existe o no el numero ^^.

Sin mas que comentar, cualquier duda y/o inconveniente, aquí estamos.

Suerte!
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

Evitar repeticion entre dos listas

Publicado por Gracias pero... (2 intervenciones) el 18/11/2015 04:39:40
Hola! Gracias por tu recomendacion, me sirvio de mucho, pero el problema que tengo es que quiero evitar que una lista tenga diferentes elementos con la otra, es decir si la LISTA 1 = [1,2,3,4,5] LISTA 2 = [6,7,8,9].
Mi problema es: Lista 1 = [1,2,3,4,5] Lista 2 = [1,6,7,8,5]; la lista 2 tiene los elementos[1,5] que tambien estan en lista 1, quisiera saber como establecer una condicion que, por ejemplo, en la lista 2 tenga el mismo rango de valores RANDOM que la lista 1, pero que no contenga la lista 1. Gracias
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 Lawliet

Evitar repeticion entre dos listas

Publicado por Lawliet (236 intervenciones) el 18/11/2015 18:17:10
Hola...

No estoy seguro si esto es lo que necesitas pero espero te sea de utilidad.

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
public static void main(String[] args) {
	// Declaramos nuestras dos listas.
	Set<Integer> setUno = new LinkedHashSet<Integer>();
	Set<Integer> setDos = new LinkedHashSet<Integer>();
	// Agregamos 5 números aleatorios a la primer lista.
	while(setUno.size() != 5){
		// Generamos un numero aleatorio entre 0 - 9.
		// Agregamos el número generada a nuestra primer lista.
		Random random = new Random();
		setUno.add(random.nextInt(10));
	}
	// Mientas nuestra segunda lista no tenga el mismo tamaño que la primer lista, agregar valores en ella.
	while(setDos.size() != setUno.size()){
		// Generamos un numero aleatorio entre 0 - 9.
		// Lo guardamos en una variable.
		Random random = new Random();
		int actual = random.nextInt(10);
		// Validamos si nuestro numero actual se encuentra en la primer lista.
		// Si es diferente, lo agregamos a la segunda lista.
		if (!setUno.contains(actual)){
			setDos.add(actual);
		}
	}
 
	System.out.println("LISTA UNO:");
	for(Integer valorUno : setUno){
		System.out.println(valorUno);
	}
	System.out.println("LISTA DOS:");
	for(Integer valorDos : setDos){
		System.out.println(valorDos);
	}
}

Output
1
2
3
4
5
6
7
8
9
10
11
12
LISTA UNO:
8
1
3
2
5
LISTA DOS:
6
7
9
4
0

Sin mas que comentar, cualquier duda y/o inconveniente, aquí estamos.

Suerte!
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