Tengo dos listas (no listas de Java, puede decir dos columnas)
Por ejemplo
**List 1** **Lists 2**
milan hafil
dingo iga
iga dingo
elpha binga
hafil mike
meat dingo
milan
elpha
meat
iga
neeta.peeta
Me gustaría un método que devuelva cuántos elementos son iguales. Para este ejemplo, debería ser 3 y debería devolverme valores similares de la lista y valores diferentes también.
¿Debo usar hashmap si es así, entonces qué método para obtener mi resultado?
Por favor ayuda
PD: No es una tarea de la escuela :) Así que si me guias será suficiente
java
list
comparison
hashmap
user238384
fuente
fuente

Respuestas:
EDITAR
Aquí hay dos versiones. Uno usando
ArrayListy otro usandoHashSetCompárelos y cree su propia versión a partir de esto, hasta que obtenga lo que necesita.
Esto debería ser suficiente para cubrir:
parte de tu pregunta.
continuando con la respuesta original:
Puede usar ay
java.util.Collection/ ojava.util.ArrayListpara eso.El método keepAll hace lo siguiente:
ver esta muestra:
EDITAR
Para la segunda parte (valores similares) puede utilizar el método removeAll :
Esta segunda versión también le da valores similares y maneja repetidos (descartándolos).
Esta vez,
Collectionpodría ser a enSetlugar de aList(la diferencia es que el conjunto no permite valores repetidos)Salida:
Si no hace 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?
fuente
listOne, ¡pero +1 de todos modos!Puede probar
intersection()ysubtract()métodos deCollectionUtils.intersection()El método le brinda una colección que contiene elementos comunes y elsubtract()método le brinda todos los poco comunes.También deben cuidar elementos similares
fuente
¿Son estas realmente listas (ordenadas, con duplicados) o son conjuntos (desordenadas, sin duplicados)?
Porque si es lo último, entonces puede usar, digamos, ay
java.util.HashSet<E>hacer esto en el tiempo lineal esperado usando el convenienteretainAll.fuente
Usando java 8 removeIf
fuente
Si está buscando una forma práctica de probar la igualdad de dos colecciones, puede usar
org.apache.commons.collections.CollectionUtils.isEqualCollection, que compara dos colecciones independientemente del orden.fuente
De todos los enfoques, encuentro que usar
org.apache.commons.collections.CollectionUtils#isEqualCollectiones el mejor enfoque. Estas son las razones:Si no es posible tener
apache.commons.collectionscomo dependencia, recomendaría implementar el algoritmo que sigue para verificar la igualdad de la lista debido a su eficiencia.fuente
Solución simple :-
Salida: -
fuente
Asumiendo
hash1yhash2fuente
Encontré un ejemplo muy básico de comparación de listas en Comparación de listas. Este ejemplo verifica primero el tamaño y luego verifica la disponibilidad del elemento particular de una lista en otra.
fuente
fuente
? true :falsees necesaria en su fragmento?