metodos llenar imprimir example ejemplos ejemplo como clase java arraylist comparison contain

java - llenar - ArrayList contiene otra ArrayList



imprimir arraylist java (6)

Aquí hay otro ejemplo de uso de containsAll () que he usado para afirmar que dos matrices son iguales en la prueba JUnit:

List<String> expected = new ArrayList<String>(); expected.add("this"); expected.add("that"); expected.add("another"); List<String> actual = new ArrayListString(); actual.add("another"); actual.add("that"); actual.add("this"); Assert.assertTrue("The lists do not match!", expected.containsAll(actual));

Probablemente hay un simple delineador que no encuentro aquí, pero esta es mi pregunta:

¿Cómo verifico si una ArrayList contiene todos los objetos en otra ArrayList? Estoy buscando (si existe) para algo como:

//INCORRECT EXAMPLE: if(one.contains(two)) { return true; } else { return false; }

Por ejemplo:

ArrayList one = {1, 2, 3, 4, 5} ArrayList two = {1, 2, 3} --> True ArrayList two = {} --> True ArrayList two = {1, 2, 3, 4, 5} --> True ArrayList two = {1, 5, 2} --> True ArrayList two = {1, 7, 4} --> False ArrayList two = {0, 1, 3} --> False ArrayList two = {4, 5, 6} --> False ArrayList two = {7, 8, 9} --> False


Eche un vistazo al método containsAll(Collection<?> c) desde la interfaz de la List . Creo que es lo que estás buscando.


Hay un método llamado containsAll declarado en la interfaz java.util.Collection . En su configuración one.containsAll(two) da la respuesta deseada.


Por la interfaz de la lista:

myList.containsAll(...);


Puede usar containsAll método de la lista para realizar el control. Sin embargo, esta es una operación lineal. Si la lista es grande, primero debe convertirla a HashSet y luego realizar containsAll :

HashSet tmp = new HashSet(one); if (tmp.containsAll(two)) { ... }

Si la longitud de one es N y la longitud de dos es M , esta solución tiene una complejidad temporal de O(M+N) ; el "plano" containsAll tiene la complejidad de O(M*N) , que puede ser significativamente peor.


Su código en el ejemplo no tiene sentido, pero aquí hay un ejemplo de todos modos.

ArrayList<Integer> one, two; //initialize boolean good = true; for (int i = 0; i < two.size(); i ++) { if (!(one.contains(two.get(i))) { good = false; break; } }

Simplemente recorre los two elementos y verifica si están en one .

Entonces el good booleano contiene el valor que desea.

Ver ArrayList#contains .

EDITAR : oh wow, me olvidé por completo de todo. Bueno, esta es una forma alternativa de hacerlo si realmente quieres entenderlo.