Je venais d'écrire une méthode qui a fait ce que vous décrivez ... quelque chose comme:
public static <T> void sortWithDefault(final List<T> list)
{
Collections.sort(list);
// remove the default item
// insert the default item at the start of the list
}
Vous pouvez également utiliser un comparateur (il serait moins évident si) où il se compare toujours article par défaut comme le plus bas dans toute comparaison et la comparaison naturelle pour le reste des articles. Pour cela, vous appelez Collections.sort (Liste, Comparateur);
Voici un code pour un tel comparateur ... encore une fois. Je ne l'aime pas vraiment, car il est pas évident ... mais il est une solution raisonnable, je suppose:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class Main
{
public static void main(final String[] argv)
{
final List<Integer> list;
list = new ArrayList<Integer>();
for(int i = 10; i > 0; i--)
{
list.add(i);
}
Collections.sort(list, new DefaultAtStartComparator<Integer>(5));
System.out.println(list);
}
}
class DefaultAtStartComparator<T extends Comparable>
implements Comparator<T>
{
private final T defaultValue;
public DefaultAtStartComparator(final T value)
{
defaultValue = value;
}
public int compare(final T a,
final T b)
{
if(a.equals(defaultValue))
{
return (-1);
}
if(b.equals(defaultValue))
{
return (1);
}
return (a.compareTo(b));
}
}
Je préférerais la première solution seulement puisque la deuxième semble un peu étrange, nous attendons généralement un comparateur pour trier seulement. Merci TofuBeer. – Reddy