Oltre al poter utilizzare le istruzioni lambda nel Comparator, nulla di quanto visto è particolare di Java 8, vediamo come questa versione di Java fornisce strumenti per poter scrivere codice più conciso ed efficiente e nuovi metodi quali merge, computIfPresent, computIfAbsent, forEach e removeIf

Usare il method references

Il method references è una modalità più compatta di scrittura del codice omettendo alcuni parti che possono essere dedotte automaticamente dal compilatore.

Per capire questo concetto è bene iniziare con un esempio pratico :

public class AereoHelper {
  public static int compareByPeso(Aereo a1, Aereo a2) {
    return a1.peso - a2.peso;
  }
  publis static int compareByNome(Aereo a1, Aereo a2) {
    return a1.nome.compareTo(a2.nome);
  }
}

Continua a leggere

Abbiamo visto come alcune Collections memorizzano gli elementi secondo un ordine, sappiamo che ad esempio sulle String l’ordinamento viene fatto sui caratteri che la compongono, o sui numeri che seguono un ordinamento naturale.

Possiamo però ordinare anche gli oggetti che definiamo noi, Java ti fornisce un interfaccia chiamata Comparable, se la tua classe implementa questa interfaccia, può essere memorizzata in strutture dati che prevedono l’ordinamento, altrimenti prenderai un eccezione quando tenterai di aggiungerle.

Java ti fornisce anche una classe per eseguire ordinamenti senza che le tue classi implementino Comparable, questa classe di chiama Comparator.

Continua a leggere

In java, una collection è un insieme di oggetti contenuti all’interno di un singolo oggetto, il Java Collection Framework è un set di classi contenute nel package java.util che definisce 4 interfacce :

  • List – lista ordinata di oggetti che permette la presenza di duplicati, gli elementi sono accessibili per mezzo di un indice
  • Set – lista che non permette la presenza di duplicati
  • Queue – è una collection che ordina gli elementi in base al loro utilizzo, in genere si usa in FIFO, First In First Out, ma è possibile processarla in maniera differente
  • Map – è una collection che associa una chiave ad un elemento

Solo una precisazione, tutte queste interfacce estendono Collection tranne Map, Map fa parte del Java Collection Framework ma non implementa Collection

Continua a leggere

I generics, introdotti dalla versione 5 di Java, aiutano a scrivere codice più sicuro, evitando rischi di invocazione errata o utilizzo improprio di collection. Vediamo un esempio di codice pericoloso che utilizza le collection senza l’uso dei generics:

static void stampa(List lista) {
  for (int i = 0 ; i < lista.size() ; i++) {
    String nome = (String)lista.get(i);
    System.out.println(nome);
  }
}
public static void main(String... a) {
  List nomi = new ArrayList<>();
  nomi.add(new StringBuilder("carlo"));
  stampa(nomi);
}

Questo codice compila perfettamente, ma in esecuzione otterremmo un bel ClassCastException !

Continua a leggere

Il Java Collection framework include le classi che implementano le seguenti interaccie : Map, List, Queue e Set.

Durante la certificazione OCA abbiamo studiato solo la classe ArrayList, per l’OCP è richiesta la conoscenza molto più approfondita delle classi fondamentali di ogni interfaccia, in particolare, vedremmo tutte le caratteristiche, come ordinarle e come cercare elementi al loro interno.

ArrayList

Questo è un oggetto che  può contenere altri oggetti, di conseguenza, non si possono memorizzare all’interno di un ArrayList, tipi primitivi, a differenza dei comuni array che possono farlo, teniamo sempre in mente però la capacità di Autoboxing di java.

Continua a leggere