Java e il problema dell'ordinamento

Programmazione - Java Visite: 4618
document_java Java e il problema dell'ordinamento
Offrontiamo il problema dell'ordinamento in Java.

SORT A LIST

Il primo problema che andremo ad affrontare è l'ordinamento di una Lista in Java. Ma non un ordinamento qualsiasi bensì un ordinamento case-insensitive. Ovvero, un ordinamento che non deve fare distinzione tra caratteri minuscoli e caratteri maiuscoli.

L'ordinamento lo si fa semplicemente così:

 

List<MioOggetto> miaLista = new LinkedList<MioOggetto>();

[...]

Collections.sort(miaLista, new CaseInsensitiveComparator());

 

In questo esempio abbiamo una lista di oggetti qualsiasi che vogliamo ordinare.

Per farlo è sufficiente chiamare il metodo sort() della classe Collection.

Naturalmente dato che abbiamo a che fare con oggetti bisogna implementare il Comparator per istruire il linguaggio a fare il confronto tra oggetti.

Il comparator sarà così:


import java.text.CollationKey;
import java.text.Collator;
import java.util.Comparator;


/**
* Classe per l'ordinamento case insensitive.
*
*/
public class CaseInsensitiveComparator implements Comparator {
   Collator collator = Collator.getInstance();
   public int compare(Object element1, Object element2)
   {
      CollationKey key1 = null;
      CollationKey key2 = null;
      if(element1 instanceof MioOggetto && element2 instanceof MioOggetto)
      {
         key1 = collator.getCollationKey(((MioOggetto)element1).getNome());
         key2 = collator.getCollationKey(((MioOggetto)element2).getNome());
      }
     else
    {
        key1 = collator.getCollationKey(element1.toString());
        key2 = collator.getCollationKey(element2.toString());
    }       
    return key1.compareTo(key2);
   }
}

Importantissimo l'uso delle Collation per ragioni di efficienza.

SORT A HASHMAP

Se volete invece ordinare un HashMap leggete il seguente articolo qui.