2012-03-06 11 views
5

Per chiunque abbia una domanda come questa, è probabilmente necessario "Collections.sort", non "Collection.sort", l'errore che ho fatto di seguito.Perché non riesco a chiamare Collections.sort() sul mio ArrayList <T>?

Ho definito una classe definita come

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

Ho un campo in un'altra classe definita come:

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

voglio ordinare questa collezione, quindi in un metodo che io chiamo:

Collection.sort(fStores); 

Tuttavia, viene visualizzato il seguente errore di compilazione:

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

ArrayList implementa List, e dalla documentazione:

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

Quindi, perché ottengo l'errore? Ho anche provato a creare il mio discendente di Comparator e passare questo al metodo di ordinamento senza fortuna.

Immagino che ci sia qualcosa in merito a "< T estendibile Comparabile <? Super T>>" Non capisco ...?

+1

Non è forse 'Collections.sort()', 'non Collection.sort()'? –

+1

La raccolta è un errore di battitura? Penso che tu intenda "Collezioni" –

risposta

7

Ci sono fondamentalmente 2 cose che hai bisogno di guardare:

Collections

Dal 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

Quindi, fondamentalmente, se si deve ordinare o questo tipo di algoritmi usa questo.

successivo è: ->

Collection

Questa è un'interfaccia che fornisce la base del quadro per la raccolta di Java. Non include Mappa e Mappa ordinata. Rappresenta un gruppo di oggetti conosciuti come i suoi elementi e ha implementazioni per implementazioni concrete. Devi pensarci quando vuoi lavorare con ArrayLists e Maps.

Quindi, linea di fondo, è necessario eseguire un algoritmo statico che è presente nelle raccolte. Quindi, utilizza Collections.sort

1

Intendevi Collections.sort() (collezioni al plurale)?

1

È Collections.sort() con un s.

import java.util.Collections e si dovrebbe andare bene.

1

Il tuo problema è che si sta chiamando Collection.sort(), non Collections.sort()

Si tratta di due classi distinte:

Collections

Collection

Collection è un'interfaccia mentre Collections è una classe di utilità.

+0

Bingo! Grazie per la risposta rapida. – Steve

+1

@Steve Certo, certo. Felice di aiutare: D –

0

Inoltre, se stai usando eclipse, controlla che l'istruzione import per Collections sia quella giusta!

1

Nel caso in cui è arrivato qui a causa di un errore simile:

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

Poi probabilmente stai usando JDK inferiore quindi 1.8. Cambiarlo in Java Build Path:

enter image description here

Problemi correlati