2010-01-15 23 views
20

No encuentro ninguna función de clasificación en la API de Java para vectores. Collections.sort es solo para List<T> y no para Vector<T>.¿Qué función se puede usar para ordenar un Vector?

No quiero escribir mi propia función de clasificación porque creo que Java debería implementar esto.

estoy buscando algo como:

class ClassName implements Comparator<ClassName> .. 
ClassName cn = ..; 
sort(cn); 

Respuesta

27

Según el API docs, Vector simplemente implementa List, por lo que no preveo problemas. Tal vez su confusión fue causada porque usted declaró Vector según el viejo estilo de Java 1.0:

Vector vector = new Vector(); 

en lugar de la que se declara que Aginst la interfaz (que se considera una buena práctica):

List list = new Vector(); 

Es por lo tanto sólo puede haga uso de Collections#sort() para ordenar una colección, Comparable para definir el comportamiento de ordenamiento predeterminado y/o Comparator para definir un comportamiento de ordenamiento externo controlable.

Aquí hay un Sun tutorial sobre cómo pedir objetos.

Aquí hay otra SO answer con ejemplos de código completo.

Dicho eso, ¿por qué sigues apegándote al legado Vector clase? Si puede, simplemente reemplace por el mejorado ArrayList que fue diseñado como reemplazo de Vector hace más de una década.

15

vector implementa la lista, por lo Collections.sort funcionaría.

4

De acuerdo con la especificación de API de Java para la clase Vector, implementa la interfaz List que se necesita para utilizar el método Collections.sort.

Además, como nota, para la mayoría de los usos, la clase Vector podría reemplazarse mediante el uso de una de las implementaciones List en Java Collections Framework, como ArrayList. La clase Vector está sincronizada, por lo tanto, a menos que exista una necesidad real de acceso sincronizado, se debe usar una de las otras implementaciones List.

2

Vector es una Lista

1

Collections.sort (nameOfTheVectorToBeSorted); prueba esto con tu vector, que será ordenado.

0

Collections.sort(vector_name)

se ordenan el vector en su lugar, por lo que no es necesario asignar el resultado del comando anterior vuelta al vector.

Esto funciona porque los Vectores son implementaciones de Listas.

1

No se olvide de añadir implements Comparable<> en su clase:

public class XXXX 
    implements Comparable<XXXX> { 

} 

y redefinir compareTo() en su clase del tipo de objeto almacenado en su vector.

También recibí este problema, Eclipse IDE me decía que Collection.sort() era solo para List<T>. No podría hacer que funcione hasta que hice lo que acabo de decir.

Cuestiones relacionadas