Bonjour,
j'ai crée une liste de type vector , qui contient des objets de type entier ( Integer), comment parcourir ma liste pour trouver le maximum et le minimum?
merci.
Bonjour,
j'ai crée une liste de type vector , qui contient des objets de type entier ( Integer), comment parcourir ma liste pour trouver le maximum et le minimum?
merci.
Le type Vector est "vieux" et date d'anciennes versions de JAVA.
Si tu n'es pas obligée d'utiliser ce type d'objets, je te suggère vivement de le remplacer par une ArrayList.
Si tu tiens vraiment à utiliser un Vector, voici un bout de code qui devrait t'aider:
Evidemment, tu peux t'en inspirer pour écrire une méthode getMin().
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10 public Integer getMax(Vector v) { Integer result = Integer.MIN_VALUE; Integer temp = null; for(int i=0; i<v.size(); i++) { temp = (Integer) v.get(i); if(temp.intValue() > result.intValue()) { result = temp; } } return result; }
Au passage, si tu changes ton Vector en une ArrayList (ou une LinkedList), le code ci-dessus marche encore: il suffit de changer le type du paramètre de la méthode
Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
Mes articles et tutoriaux & Mon blog informatique
Pour ce qui est de Vector, tu peux oublier dans les cas simples, il vaut mieux utiliser une ArrayList (ArrayList<Integer> ici).
Pour le max :
(grillé)
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 List<Integer> ta_liste = new ArrayList<Integer>(); ... int max = -1; for(Integer i:ta_liste) { if(i>max) max = i; }
Au final j'ai trouvé plus simple :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Collections.max(ta_liste);
Ignorer c'est aussi croire que l'on sait.
Merci d'essayer d'écrire correctement.
Pas de questions techniques par MP SVP.
Euh... Je ne vois pas en quoi ArrayList est plus simple que Vector. Ces deux classes implémentent toutes deux les mêmes méthodes...
"Et tu comprendras pourquoi mon nom est l'Eternel, quand sur toi s'abattra la colère du Tout-puissant."
Il n'est pas plus simple, il est juste "à préférer" si tu l'utilise dans des applications mono-threadées. Vector est synchronisé, ce qui signifie que la JVM effectuera toutes sortes de tests pour sécuriser ton code exécuté sur le vector en cas d'accès concurent, ce qui n'est pas le cas de ArrayList.Envoyé par Rayndell
CF : http://fmora.developpez.com/tutoriel...mediaire/#L5.1
Fred
Développeur Java / Flex à Shanghai, Chine
mes publications
Mon dernier tutoriel : Messages Quit IRC : explications
La rubrique IRC recrute des redacteurs : contactez moi
Ce flim n'est pas un flim sur le cyclimse. Merci de votre compréhension.[/SIZE]
De plus Vector est voué à disparaitre...
Si vraiment tu as besoin d'une collection de type ArrayList synchronisée, tu peux très bien le faire en la créant de cette manière :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 List list = Collections.synchronizedList(new ArrayList(...));
Ah bon ? Tu as lu ça ou ?Envoyé par iohack
Fred
Développeur Java / Flex à Shanghai, Chine
mes publications
Mon dernier tutoriel : Messages Quit IRC : explications
La rubrique IRC recrute des redacteurs : contactez moi
Ce flim n'est pas un flim sur le cyclimse. Merci de votre compréhension.[/SIZE]
On pourrait corriger la phrase en disant:Envoyé par mavina
Vector devrait disparaître si les gens savaient qu'une nouvelle API de collection était sortie très récemment (il y a environ 7-8 ans) lol
Vector ne disparaîtra pas, ne serait-ce que pour la compatibilité ascendante. Au pire, elle peut devenir "deprecated".
Avant de poster, pensez à regarder la FAQ, les tutoriaux, la Javadoc (de la JRE que vous utilisez) et à faire une recherche
Je ne réponds pas aux questions techniques par MP: les forums sont faits pour ça
Mes articles et tutoriaux & Mon blog informatique
Bah Vector est utile dans certains cas ou la synchronisation est obligatoire, utiliser un Collections.synchronizedList(ArrayList) ou utiliser un Vector, c'est la même chose, je ne vois pas trop la différence à vrai dire : ils implémentent les memes interfaces, ont les memes utilités. L'un est juste passé par une fonction auxiliaire pour être synchronisé où l'autre n'en a pas eu besoin. M'est avis que les fonctions de synchronisation de la classe Collections sont surtout utiles pour des classes comme certaines listes, certains sets ou autres qui n'ont pas leur "équivalent" synchronisé dans l'API de base...Envoyé par ®om
Je me trompe peut-être
Fred
Développeur Java / Flex à Shanghai, Chine
mes publications
Mon dernier tutoriel : Messages Quit IRC : explications
La rubrique IRC recrute des redacteurs : contactez moi
Ce flim n'est pas un flim sur le cyclimse. Merci de votre compréhension.[/SIZE]
Salut,
La question est surtout : Pourquoi utiliser Vector ?
La seule réponse que je connaisse : la compatibilité ascendante avec des API pre-Java 1.2 qui l'utiliserait.
Pour le reste il n'y a aucun intérêt à ne pas lui préférer ArrayList (ou une autre implémentation selon les besoins) :
- Vector est synchronisé, ce qui est inutile dans 90% des cas (et dans ces cas-là on pourra utiliser Collections.synchronizedList() comme cela a été dit).
- L'API de Vector n'est pas très clair car elle possède de nombreuse méthode "doublons". A titre de comparaison, et pour les mêmes fonctionnalités, Vector possède 15 méthodes de plus qu'ArrayList.
a++
Vector est plus lent que Collection.synchronizedList(new ArrayList())...Envoyé par mavina
Si vraiment tu veux trouver un argument...
De toute façon la "synchronisation" ne s'effectue que sur les méthodes, comme l'ajout ou la récupération, mais c'est presque quasiment toujours inutile, car ce qui est important par exemple, c'est que lorsque tu parcours une liste par un itérateur, la liste ne soit pas modifiée par un autre thread. Ceci n'est pas garanti par la synchronisation des méhodes uniquement (dans le cas où ça plante ça lève une ConcurrentModificationException), il faut une synchronisation extérieure...
Si tu fais la synchro sur un autre objet que sur le vecteur lui-même à l'extérieur, ça te fait double synchronisation (une pour la synchro extérieure, plus une pour la synchro "interne").
Pour info, l'ajout dans une arraylist est environ 7 fois plus rapide que l'ajout dans un vector... (même si c'est insignifiant).
Comme l'a dit adiGuba, il n'y a vraiment aucun intérêt à utiliser Vector...
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager