1. Lista de métodos

¿Recuerdas que los creadores de Java escribieron una clase de ayuda completa llamada Arrayspara nuestra comodidad cuando trabajamos con arreglos?

Hicieron lo mismo para las colecciones. Java tiene una java.util.Collectionsclase que tiene muchos métodos que son útiles para trabajar con colecciones. Estos son solo los más interesantes:

Métodos Descripción
addAll(colls, e1, e2, e3, ...)
Agrega los elementos e1, e2, e3, ... a la collscolección
fill(list, obj)
Reemplaza todos los elementos en la lista aprobada conobj
nCopies(n, obj)
Devuelve una lista de ncopias del objobjeto.
replaceAll(list, oldVal, newVal)
Reemplaza todas las instancias de oldValcon newValen la listlista
copy(dest, src)
Copia todos los elementos de la srclista a la destlista
reverse(list)
Invierte la lista.
sort(list)
Ordena la lista en orden ascendente
rotate(list, n)
Cambia cíclicamente los elementos de la listlista por nelementos
shuffle(list)
Mezcla aleatoriamente los elementos de la lista
min(colls)
Encuentra el elemento mínimo en la collscolección.
max(colls)
Encuentra el elemento máximo en la collscolección.
frequency(colls, obj)
Determina cuántas veces objaparece el elemento en la collscolección.
binarySearch(list, key)
Busca keyen una lista ordenada y devuelve el índice correspondiente.
disjoint(colls1, colls2)
Devuelve truesi las colecciones no tienen elementos en común
Importante:

Muchos de estos métodos no usan las clases ArrayList, HashSety HashMapper se, sino con las interfaces correspondientes: Collection<T>, List<T>, Map<K, V>.

Esto no es un problema: si un método acepta un List<T>, siempre puedes pasarle un ArrayList<Integer>, pero el operador de asignación no funciona en la dirección opuesta.


2. Crear y modificar colecciones

Collections.addAll(Collection<T> colls, T e1, T e2, T e3, ...)método

El addAll()método agrega los elementos e1, e2, e3, ... a la collscolección Se puede pasar cualquier número de elementos.

Código Salida de consola
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5);

for (int i: list)
   System.out.println(i);
1
2
3
4
5

Collections.fill(List<T> list, T obj)método

El fill()método reemplaza todos los elementos de la listcolección con el objelemento.

Código Salida de consola
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);

Collections.fill(list, 10);

for (int i: list)
   System.out.println(i);
10
10
10

Collections.nCopies(int n, T obj)método

El nCopies()método devuelve una lista de ncopias del objelemento. Tenga en cuenta que la lista devuelta es inmutable, lo que significa que no puede cambiarla. Solo puedes usarlo para leer valores:

Código Descripción
List<String> immutableList = Collections.nCopies(5, "Hello");

ArrayList<String> list = new ArrayList<String>(immutableList);

for(String s: list)
   System.out.println(s);
Cree una lista inmutable de 5 Hellocadenas.
Cree un mutable listy rellénelo con los valores de la immutableListlista.

Salida de la consola:
Hello
Hello
Hello
Hello
Hello

Collections.replaceAll (List<T> list, T oldValue, T newValue)método

El replaceAll()método reemplaza todos los elementos de la listcolección iguales a oldValuecon newValue.

Código Salida de consola
ArrayList<Integer> list = new ArrayList<Integer>();
list.add(1);
list.add(2);
list.add(3);

Collections.replaceAll(list, 2, 20);

for (int i: list)
   System.out.println(i);
1
20
3

Collections.copy (List<T> dest, List<T> src)método

El copy()método copia todos los elementos de la srccolección en la destcolección.

Si la destcolección comienza más larga que la srccolección, los elementos restantes de la destcolección permanecerán intactos.

Importante:
La destcolección debe ser al menos tan larga como la colección (de lo contrario, se lanzará srcuna ).IndexOutOfBoundsException
Código Salida de consola
ArrayList<Integer> srcList = new ArrayList<Integer>();
Collections.addAll(srcList, 99, 98, 97);

ArrayList<Integer> destList = new ArrayList<Integer>();
Collections.addAll(destList, 1, 2, 3, 4, 5, 6, 7);

Collections.copy(destList, srcList);

for (int i: destList)
   System.out.println(i);
99
98
97
4
5
6
7


3. Orden de los elementos

Collections.reverse(List<T> list)método

El reverse()método invierte el orden de los elementos de la lista pasada.

Código Salida de consola
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5);

Collections.reverse(list);

for (int i: list)
   System.out.println(i);
5
4
3
2
1

Collections.sort(List<T> list)método

El sort()método ordena la lista aprobada en orden ascendente.

Código Salida de consola
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15);

Collections.sort(list);

for (int i: list)
   System.out.println(i);
2
4
11
15
23

Collections.rotate(List<T> list, int distance)método

El rotate()método desplaza cíclicamente los elementos de la lista pasada por distanceposiciones hacia adelante.

Código Salida de consola
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5, 6, 7, 8, 9);

Collections.rotate(list, 3); // Shift by 3 positions

for (int i: list)
   System.out.println(i);
7
8
9
1
2
3
4
5
6

Collections.shuffle(List<T> list)método

El shuffle()método baraja aleatoriamente todos los elementos de la lista aprobada. El resultado es diferente cada vez.

Código Salida de consola
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5);

Collections.shuffle(list); // Shuffle the elements

for (int i: list)
   System.out.println(i);
5
2
4
3
1


4. Encontrar elementos en colecciones

Collections.min(Collection<T> colls)método

El min()método devuelve el elemento mínimo en la colección.

Código Salida de consola
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15);

int min = Collections.min(list);

System.out.println(min);
2

Collections.max(Collection<T> colls)método

El max()método devuelve el elemento máximo en la colección.

Código Salida de consola
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15);

int max = Collections.max(list);

System.out.println(max);
23

Collections.frequency(Collection<T> colls, T obj)método

El frequency()método cuenta el número de veces que objaparece el elemento en la collscolección.

Código Salida de consola
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 4, 15, 4, 2, 4);

int count = Collections.frequency(list, 4);

System.out.println(count);
3

Collections.binarySearch(Collection<T> colls, T obj)método

El binarySearch()método busca el objelemento en la collscolección. Devuelve el índice del elemento encontrado. Devuelve un número negativo si no se encuentra el elemento.

Importante:
Antes de llamar al binarySearch()método, se debe ordenar la colección (usar Collections.sort()).
Código Salida de consola
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 11, 2, 23, 5, 15, 4, 2, 4);

Collections.sort(list);  // 2, 2, 4, 4, 5, 11, 15, 23

int index = Collections.binarySearch(list, 5);    // 4
System.out.println(index);

int index2 = Collections.binarySearch(list, 15);  // 6
System.out.println(index2);

int index3 = Collections.binarySearch(list, 16); // The element doesn't exist
System.out.println(index3);
4
6
-8

Collections.disjoint(Collection<T> coll1, Collection<T> coll2)método

El disjoint()método regresa truesi las colecciones pasadas no tienen ningún elemento en común.

Código Salida de consola
ArrayList<Integer> list = new ArrayList<Integer>();
Collections.addAll(list, 1, 2, 3, 4, 5, 6, 7);

ArrayList<Integer> list2 = new ArrayList<Integer>();
Collections.addAll(list2, 99, 98, 97);

boolean isDifferent = Collections.disjoint(list, list2);
System.out.println(isDifferent);
true