IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Java Discussion :

trier une AbstractList, à votre avis quelle est la meilleure classe?


Sujet :

Langage Java

  1. #1
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 57
    Points : 43
    Points
    43
    Par défaut trier une AbstractList, à votre avis quelle est la meilleure classe?
    Je m'intéresse à deux classes: LinkedList et ArrayList (ou Vector si vous préférez, je crois qu'ArrayList est la nouvelle version de Vector).
    Vu la façon dont elles fonctionnent, il me semble que:
    -LinkedList est efficace pour la suppression/ajout d'un élément, mais pas pour l'accès à un élément.
    -ArrayList est peu efficace pour supprimer/ajouter un élément (sauf si c'est en fin de liste/début de liste), mais très efficace pour accéder à un élément (car ArrayList est une sorte de tableau).

    Ma question: quelle est la plus efficace de ces deux classe pour le tri de ses éléments, par exemple en utilisant Collection.sort() (si les élements sont tous de même classe implémentant l'interface Comparable)???

  2. #2
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 57
    Points : 43
    Points
    43
    Par défaut
    personne n'a d'idée?

  3. #3
    Membre averti Avatar de spilliaert
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    268
    Détails du profil
    Informations personnelles :
    Âge : 33
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2005
    Messages : 268
    Points : 307
    Points
    307
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    import java.util.*;
    public class Sorttest {
     
    	public static void main (String args[]){
     
    		List<String> linkedstaff = new LinkedList<String>();
    		for(int i=0;i<=100000;i++){
    			linkedstaff.add(i+"sfxbhsqflnxhlnqsklfxnqksldfjhxnqlskdfjxhnqslkdfhxnqsldkfhxnqlskfxjhsnfx");
    		}
    		long linkstart=System.currentTimeMillis();
    		Collections.sort(linkedstaff);
    		System.out.println("LinkedList: "+(System.currentTimeMillis()-linkstart));
     
    		ArrayList<String> arrayliststaff = new ArrayList<String>();
    		for(int i=0;i<=100000;i++){
    			arrayliststaff.add(i+"sfxbhsqflnxhlnqsklfxnqksldfjhxnqlskdfjxhnqslkdfhxnqsldkfhxnqlskfxjhsnfx");
    		}
    		long arraystart=System.currentTimeMillis();
    		Collections.sort(linkedstaff);
    		System.out.println("ArrayList: "+(System.currentTimeMillis()-arraystart));
     
    }
     
     
    }
    Comme tu peux le constater, ArrayList se montre plus performant...(si c'est la vitesse que tu veux optimiser)
    J'obtiens:
    LinkedList: 188
    ArrayList: 109
    J'espère t'avoir aidé...

    @+

    Spilliaert

  4. #4
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 57
    Points : 43
    Points
    43
    Par défaut
    Merci pour ton idée de programme test! (je ne savais pas comment utiliser une quelconque fonction d'horloge).
    Par contre les listes que tu construis sont déjà classées et je me disais que cela pouvait influer sur les résultats.
    J'ai donc remplacé "i" dans les xxxstaff.add(...) par des Maths.random()*1000 et cela confirme ton test, LinkedList est au moins deux fois moins rapide qu'arrayList.

    Encore merci!

  5. #5
    Membre éclairé Avatar de g_rare
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    608
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 608
    Points : 683
    Points
    683
    Par défaut
    Citation Envoyé par Nicool
    je crois qu'ArrayList est la nouvelle version de Vector
    Petite précision : la seule différence (fondamentale) entre ArrayList et Vector, c'est que "Vector est la version synchronisée de ArrayList".

  6. #6
    Membre du Club
    Inscrit en
    Avril 2006
    Messages
    57
    Détails du profil
    Informations forums :
    Inscription : Avril 2006
    Messages : 57
    Points : 43
    Points
    43
    Par défaut
    au temps pour moi!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 13
    Dernier message: 18/01/2013, 23h48
  2. [AJAX] A votre avis : quelle est la meilleure solution ?
    Par tavarlindar dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 15/03/2008, 11h57
  3. Réponses: 3
    Dernier message: 13/12/2006, 14h03
  4. Réponses: 3
    Dernier message: 09/05/2006, 15h16

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo