Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Implementação do método sort na interface List

Olá a todos. É só uma curiosidade meio besta...

No código apresentado durante o curso a implementação do método sort é a que ele simplesmente delega pro Collections.sort:

default void sort(Comparator<? super E> c) {
        Collections.sort(this, c);
}

Olhando aqui no ubuntu, na última versão estável do java (8u60), está assim:

@SuppressWarnings({"unchecked", "rawtypes"})
    default void sort(Comparator<? super E> c) {
        Object[] a = this.toArray();
        Arrays.sort(a, (Comparator) c);
        ListIterator<E> i = this.listIterator();
        for (Object e : a) {
            i.next();
            i.set((E) e);
        }
   }

Paulo, ou alguém, sabe dizer se mudou e o motivo de ter mudado? Obrigado!

2 respostas
solução!

Oi Lucas,

eu não tenho certeza mas parece que a chamada foi invertida.

O método sort da classe Collections chama agora o método sort da interface List:

Na classe Collections:

    @SuppressWarnings("unchecked")
    public static <T extends Comparable<? super T>> void sort(List<T> list) {
        list.sort(null);
    }

Abs

Oi Nico,

eu não tinha prestado atenção nesse detalhe em Collections. Aqui também mudou.

Acho que faz sentido, já que o sort em Collections recebe uma List, aí ele só chama o sort da própria List. :)

Muito obrigado! Abraço.