Java - The Collection Algorithms

Il framework delle raccolte definisce diversi algoritmi che possono essere applicati a raccolte e mappe.

Questi algoritmi sono definiti come metodi statici all'interno della classe Collections. Molti dei metodi possono generare un fileClassCastException, che si verifica quando si tenta di confrontare tipi incompatibili o un file UnsupportedOperationException, che si verifica quando si tenta di modificare una raccolta non modificabile.

I metodi definiti nell'algoritmo del framework di raccolta sono riassunti nella seguente tabella:

Sr.No. Metodo e descrizione
1

static int binarySearch(List list, Object value, Comparator c)

Cerca il valore nell'elenco ordinato in base a c. Restituisce la posizione del valore nell'elenco o -1 se il valore non viene trovato.

2

static int binarySearch(List list, Object value)

Cerca il valore nell'elenco. L'elenco deve essere ordinato. Restituisce la posizione del valore nell'elenco o -1 se il valore non viene trovato.

3

static void copy(List list1, List list2)

Copia gli elementi di list2 in list1.

4

static Enumeration enumeration(Collection c)

Restituisce un'enumerazione c.

5

static void fill(List list, Object obj)

Assegna obj a ogni elemento della lista.

6

static int indexOfSubList(List list, List subList)

Cerca nell'elenco la prima occorrenza di subList. Restituisce l'indice della prima corrispondenza o .1 se non viene trovata alcuna corrispondenza.

7

static int lastIndexOfSubList(List list, List subList)

Cerca nella lista l'ultima occorrenza di subList. Restituisce l'indice dell'ultima corrispondenza o .1 se non viene trovata alcuna corrispondenza.

8

static ArrayList list(Enumeration enum)

Restituisce un ArrayList che contiene gli elementi di enum.

9

static Object max(Collection c, Comparator comp)

Restituisce l'elemento massimo in c come determinato da comp.

10

static Object max(Collection c)

Restituisce l'elemento massimo in ccome determinato dall'ordinamento naturale. La raccolta non deve essere ordinata.

11

static Object min(Collection c, Comparator comp)

Restituisce l'elemento minimo in ccome determinato da comp. La raccolta non deve essere ordinata.

12

static Object min(Collection c)

Restituisce l'elemento minimo in c come determinato dall'ordinamento naturale.

13

static List nCopies(int num, Object obj)

Restituisce num copie di obj contenute in un elenco immutabile. num deve essere maggiore o uguale a zero.

14

static boolean replaceAll(List list, Object old, Object new)

Sostituisce tutte le occorrenze del vecchio con il nuovo nell'elenco. Restituisce vero se si è verificata almeno una sostituzione. Restituisce falso, altrimenti.

15

static void reverse(List list)

Inverte la sequenza nell'elenco.

16

static Comparator reverseOrder( )

Restituisce un comparatore inverso.

17

static void rotate(List list, int n)

Ruota l'elenco di nposti a destra. Per ruotare a sinistra, utilizza un valore negativo pern.

18

static void shuffle(List list, Random r)

Mescola (cioè randomizza) gli elementi nell'elenco utilizzando r come fonte di numeri casuali.

19

static void shuffle(List list)

Mescola (cioè randomizza) gli elementi nell'elenco.

20

static Set singleton(Object obj)

Restituisce obj come un insieme immutabile. Questo è un modo semplice per convertire un singolo oggetto in un set.

21

static List singletonList(Object obj)

Restituisce obj come un elenco immutabile. Questo è un modo semplice per convertire un singolo oggetto in un elenco.

22

static Map singletonMap(Object k, Object v)

Restituisce la coppia chiave / valore k / v come mappa immutabile. Questo è un modo semplice per convertire una singola coppia chiave / valore in una mappa.

23

static void sort(List list, Comparator comp)

Ordina gli elementi della lista come determinato da comp.

24

static void sort(List list)

Ordina gli elementi dell'elenco in base al loro ordinamento naturale.

25

static void swap(List list, int idx1, int idx2)

Scambia gli elementi nell'elenco in base agli indici specificati da idx1 e idx2.

26

static Collection synchronizedCollection(Collection c)

Restituisce una raccolta thread-safe supportata da c.

27

static List synchronizedList(List list)

Restituisce un elenco thread-safe supportato da elenco.

28

static Map synchronizedMap(Map m)

Restituisce una mappa thread-safe supportata da m.

29

static Set synchronizedSet(Set s)

Restituisce un set thread-safe supportato da s.

30

static SortedMap synchronizedSortedMap(SortedMap sm)

Restituisce un set ordinato thread-safe supportato da sm.

31

static SortedSet synchronizedSortedSet(SortedSet ss)

Restituisce un set thread-safe supportato da ss.

32

static Collection unmodifiableCollection(Collection c)

Restituisce una raccolta non modificabile supportata da c.

33

static List unmodifiableList(List list)

Restituisce un elenco non modificabile supportato dall'elenco.

34

static Map unmodifiableMap(Map m)

Restituisce una mappa non modificabile supportata da m.

35

static Set unmodifiableSet(Set s)

Restituisce un insieme non modificabile supportato da s.

36

static SortedMap unmodifiableSortedMap(SortedMap sm)

Restituisce una mappa ordinata non modificabile supportata da sm.

37

static SortedSet unmodifiableSortedSet(SortedSet ss)

Restituisce un insieme ordinato non modificabile supportato da ss.

Esempio

Di seguito è riportato un esempio, che mostra vari algoritmi.

import java.util.*;
public class AlgorithmsDemo {

   public static void main(String args[]) {
      
      // Create and initialize linked list
      LinkedList ll = new LinkedList();
      ll.add(new Integer(-8));
      ll.add(new Integer(20));
      ll.add(new Integer(-20));
      ll.add(new Integer(8));
      
      // Create a reverse order comparator
      Comparator r = Collections.reverseOrder();
      
      // Sort list by using the comparator
      Collections.sort(ll, r);
      
      // Get iterator
      Iterator li = ll.iterator();
      System.out.print("List sorted in reverse: ");
      
      while(li.hasNext()) {
         System.out.print(li.next() + " ");
      }
      System.out.println();
      Collections.shuffle(ll);
      
      // display randomized list
      li = ll.iterator();
      System.out.print("List shuffled: ");
      
      while(li.hasNext()) {
         System.out.print(li.next() + " ");
      }

      System.out.println();
      System.out.println("Minimum: " + Collections.min(ll));
      System.out.println("Maximum: " + Collections.max(ll));
   }
}

Questo produrrà il seguente risultato:

Produzione

List sorted in reverse: 20 8 -8 -20
List shuffled: 20 -20 8 -8
Minimum: -20
Maximum: 20