La répetition des elements d'un tableau java
Fermé
sabrine
-
9 nov. 2008 à 18:08
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 - 11 nov. 2008 à 14:35
Marco la baraque Messages postés 996 Date d'inscription vendredi 9 mai 2008 Statut Contributeur Dernière intervention 5 novembre 2009 - 11 nov. 2008 à 14:35
A voir également:
- Supprimer un element d'un tableau en java
- Tableau croisé dynamique - Guide
- Waptrick java football - Télécharger - Jeux vidéo
- Jeux java itel football - Télécharger - Jeux vidéo
- Comment faire un tableau - Guide
- Tableau ascii - Guide
1 réponse
Marco la baraque
Messages postés
996
Date d'inscription
vendredi 9 mai 2008
Statut
Contributeur
Dernière intervention
5 novembre 2009
329
9 nov. 2008 à 20:40
9 nov. 2008 à 20:40
Bonjour Sabrine,
En fait, c'est assez maladroit d'utiliser un tableau en java pour effectuer ce genre de traitement.
Je m'explique. Globalement tu vas créer un tableau de taille donnée, insérer des éléments à tout va, puis lorsque tu vas vouloir supprimer des éléments, tu vas avoir des tableaux avec des trous (et donc de la mémoire perdue).
De plus, pour supprimer les doublons, tu dois :
- créer une hashmap
- parcourir ton tableau (complexité O(n))
- tester si l'élément courant est dans la hashmap : si oui, tu le supprimes, sinon tu le stockes dans la hashmap et tu passes à l'élément suivant
Pour conclure, tu parcours ton tableau O(n), mais en plus tu es obligée de créer une map pour vérifier que chaque valeur n'existe pas (O(n) aussi).
L'idéal selon moi, c'est d'utiliser directement une map, comme cela tu n'auras jamais de problème de doublon et tu optimises tout cela (plus besoin de parcours, plus besoin de vérification).
Cordialement,
En fait, c'est assez maladroit d'utiliser un tableau en java pour effectuer ce genre de traitement.
Je m'explique. Globalement tu vas créer un tableau de taille donnée, insérer des éléments à tout va, puis lorsque tu vas vouloir supprimer des éléments, tu vas avoir des tableaux avec des trous (et donc de la mémoire perdue).
De plus, pour supprimer les doublons, tu dois :
- créer une hashmap
- parcourir ton tableau (complexité O(n))
- tester si l'élément courant est dans la hashmap : si oui, tu le supprimes, sinon tu le stockes dans la hashmap et tu passes à l'élément suivant
Pour conclure, tu parcours ton tableau O(n), mais en plus tu es obligée de créer une map pour vérifier que chaque valeur n'existe pas (O(n) aussi).
L'idéal selon moi, c'est d'utiliser directement une map, comme cela tu n'auras jamais de problème de doublon et tu optimises tout cela (plus besoin de parcours, plus besoin de vérification).
Cordialement,
10 nov. 2008 à 22:41
11 nov. 2008 à 01:05
Une petite question avant toute chose. Ton tableau a une taille fixe. Autrement dit, quand on va supprimer des éléments, et donc la valeur contenue dans "la case" du tableau sera nulle.
Ma question est donc :
"Est ce que ça te dérange d'avoir un tableau avec plein de valeurs nulles dedans, ou est-ce que tu veux diminuer la taille de ton tableau à chaque suppression afin d'avoir un tableau qui soit toujours plein ?"
Cordialement,
11 nov. 2008 à 10:58
et merci d'avance.
11 nov. 2008 à 14:35
Essaie le code suivant:
Tu peux l'utiliser pour copier n'importe quel tableau d'objet, moyennant un cast avant :
Integer[] entree = new Integer[15];
Object[] sortie = enleveDoublons((Object[]) entree);
Ou peut-être plus simple :
Object[] entree = new Integer[15];
Object[] sortie = enleveDoublons(entree);
Par contre ça ne fonctionne pas avec les tableaux de types primitifs (j'utilise des Object[] pour que ce soit générique, et les types primitifs ne sont pas des instances de Object).
Cordialement,