2012-03-06 15 views
5

Para cualquiera que tenga una pregunta como esta, probablemente necesite "Collections.sort", no "Collection.sort", el error que cometí a continuación.¿Por qué no puedo llamar a Collections.sort() en mi ArrayList <T>?

he definido una clase definida como

public class Store implements Serializable, Comparable<Store> { ... } 

Tengo un campo en otra clase define como:

ArrayList<Store> fStores = new ArrayList<Store>(); 

que desea ordenar esta colección, por lo que en un método que llamo:

Collection.sort(fStores); 

Sin embargo, me aparece el siguiente error de compilación:

The method sort(ArrayList<Store>) is undefined for the type Collection 

ArrayList implementa la lista, y de la documentación:

public static <T extends Comparable<? super T>> void sort(List<T> list) 

Así que, ¿Por qué aparece el error? También he intentado crear mi propio descendiente de Comparator y pasarlo al método de clasificación sin suerte.

Supongo que hay algo acerca de "T < extiende comparable <? Super T>>" No voy a entender ...?

+1

¿No es 'Collections.sort()', 'no Collection.sort()'? –

+1

¿La colección es un error tipográfico? ¡Creo que te refieres a 'Colecciones' –

Respuesta

7

Básicamente, hay 2 cosas que necesitas tener en cuenta:

Collections

Desde el Collections

This class consists exclusively of static methods that operate on or return collections. It contains polymorphic algorithms that operate on collections, "wrappers", which return a new collection backed by a specified collection, and a few other odds and ends

Así que, básicamente, si usted tiene que ordenar o ¿Algún tipo de algoritmo usa esto?

Cerca hay: ->

Collection

Esta es una interfaz que proporciona la base de la infraestructura de recogida de Java. No incluye mapa y mapa ordenado. Representa un grupo de objetos conocidos como sus elementos y tiene implementaciones para implementaciones concretas. Debe pensar en esto cuando quiera trabajar con ArrayLists y Maps.

Por lo tanto, en conclusión, tiene un algoritmo estático para ejecutar que está presente en Colecciones. Por lo tanto, use Collections.sort

1

Quizás quiso decir Collections.sort() (colecciones en plural)?

1

Su problema es que usted está llamando Collection.sort(), no Collections.sort()

Estos son dos clases distintas:

Collections

Collection

colección es una interfaz mientras Collections es una clase de utilidad.

+0

Bingo! Gracias por la rápida respuesta. – Steve

+1

@Steve Claro, claro. Feliz de ayudar: D –

0

Además, si usa eclipse, compruebe que la declaración de importación de Collections es la correcta.

1

En caso de que llegamos aquí debido a un error similar:

The method sort(Comparator<...>) is undefined for the type List<...>

Entonces es probable que el uso de JDK menor que 1,8. Cambiarlo en Java Build Path:

enter image description here

Cuestiones relacionadas