EDITAR
Aquí hay dos versiones. Una y otra utilizando ArrayList
usando HashSet
compararlas y crear su propia versión de esto, hasta que se obtiene lo que necesita.
Esto debería ser suficiente para cubrir el:
PS: No es una tarea escolar :) Así que si sólo me guía será suficiente
parte de su pregunta .
continuar con la respuesta original:
Se puede usar un java.util.Collection
y/o java.util.ArrayList
para eso.
El método retainAll hace lo siguiente:
conserva solamente los elementos de esta colección que están contenidos en la colección especificada
ver este ejemplo:
import java.util.Collection;
import java.util.ArrayList;
import java.util.Arrays;
public class Repeated {
public static void main(String [] args) {
Collection listOne = new ArrayList(Arrays.asList("milan","dingo", "elpha", "hafil", "meat", "iga", "neeta.peeta"));
Collection listTwo = new ArrayList(Arrays.asList("hafil", "iga", "binga", "mike", "dingo"));
listOne.retainAll(listTwo);
System.out.println(listOne);
}
}
EDITAR
para la segunda parte (valores similares) puede usar la removeAll método:
Elimina todos los elementos de esta colección que también están contenidos en la colección especificada.
Esta segunda versión también le da los valores y asas similares repetidos (descartándolos).
Esta vez el Collection
podría ser una Set
en lugar de un List
(valores de la diferencia es, el conjunto no permite repetir)
import java.util.Collection;
import java.util.HashSet;
import java.util.Arrays;
class Repeated {
public static void main(String [] args) {
Collection<String> listOne = Arrays.asList("milan","iga",
"dingo","iga",
"elpha","iga",
"hafil","iga",
"meat","iga",
"neeta.peeta","iga");
Collection<String> listTwo = Arrays.asList("hafil",
"iga",
"binga",
"mike",
"dingo","dingo","dingo");
Collection<String> similar = new HashSet<String>(listOne);
Collection<String> different = new HashSet<String>();
different.addAll(listOne);
different.addAll(listTwo);
similar.retainAll(listTwo);
different.removeAll(similar);
System.out.printf("One:%s%nTwo:%s%nSimilar:%s%nDifferent:%s%n", listOne, listTwo, similar, different);
}
}
Salida:
$ java Repeated
One:[milan, iga, dingo, iga, elpha, iga, hafil, iga, meat, iga, neeta.peeta, iga]
Two:[hafil, iga, binga, mike, dingo, dingo, dingo]
Similar:[dingo, iga, hafil]
Different:[mike, binga, milan, meat, elpha, neeta.peeta]
Si no es así' Haga exactamente lo que necesita, le da un buen comienzo para que pueda manejar desde aquí.
Pregunta para el lector: ¿Cómo incluiría todos los valores repetidos?
Para sugerir una estructura de datos de la lista no está lista java o HashMap o cualquier estructura de datos – user238384
Asegúrese de pensar en lo que debe hacer en casos excepcionales. ¿Pueden las listas contener el mismo valor dos veces? Si es así, si "dingo" está en ambas listas dos veces, ¿eso cuenta como dos elementos en común o solo uno? – JavadocMD
¿Se puede modificar uno de la lista? –