web-dev-qa-db-fra.com

Quelle fonction peut être utilisée pour trier un vecteur?

Je ne trouve aucune fonction de tri dans l'API Java pour les vecteurs .Collections.sort est uniquement pour List<T> et non pour Vector<T>.

Je ne veux pas écrire ma propre fonction de tri car j'estime que Java devrait l'implémenter.

Je cherche quelque chose comme:

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

Conformément à la documentation de l'API , Vector implémente simplement List, aussi je ne prévois pas les problèmes. Peut-être que votre confusion a été causée par le fait que vous avez déclaré Vector selon l'ancien style Java 1.0:

Vector vector = new Vector();

au lieu de le déclarer contre l'interface (ce qui est considéré comme une bonne pratique):

List list = new Vector();

Vous pouvez donc simplement utiliser Collections#sort() pour trier une collection, Comparable pour définir le comportement de commande par défaut et/ou Comparator pour définir un comportement de commande externe contrôlable.

Voici un tutoriel Sun sur la commande d'objets.

Voici une autre SO réponse } _ avec des exemples de code complets.

Cela dit, pourquoi continuez-vous à vous en tenir à la classe legacyVector? Si vous le pouvez, remplacez-le par le ArrayList amélioré qui a été conçu pour remplacer Vector il y a plus de dix ans.

28
BalusC

Vector implémente List afin que Collections.sort puisse fonctionner.

15
jsight

Selon les spécifications de l'API Java pour la classe Vector , elle implémente l'interface List nécessaire pour utiliser la méthode Collections.sort .

En outre, la plupart des utilisations de la classe Vector peuvent être remplacées par l’une des implémentations List de Java Collections Framework, telle que ArrayList . La classe Vector est synchronisée. Par conséquent, sauf en cas de besoin réel d'accès synchronisé, il est préférable d'utiliser l'une des autres implémentations List.

4
coobird

Le vecteur est une liste

2
les2

Collections.sort (nameOfTheVectorToBeSorted); essayez ceci sur votre vecteur, cela va être trié.

1
user2190247

N'oubliez pas d'ajouter implements Comparable<> dans votre classe:

public class XXXX 
    implements Comparable<XXXX> {

}

Et redéfinir compareTo() dans votre classe du type d'objet stocké dans votre vecteur.

J'ai eu ce problème aussi, Eclipse IDE me disait que Collection.sort() était pour List<T> uniquement. Je ne pouvais pas le faire fonctionner avant d'avoir fait ce que je viens de dire.

1
JoVroye