soyonsami
Messages postés34Date d'inscriptionjeudi 19 avril 2007StatutMembreDernière intervention 5 juillet 2007
-
23 mai 2007 à 14:49
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 2013
-
25 mai 2007 à 14:50
Bonjour, je possede un tableau de string : tab
Celui ci contient des chaines de caracteres et je voudrais supprimer toutes celles qui sont identiques et remonter l'ensemble du tableau de maniere a ne pas avoir de blanc a la place des doublons supprimés
il faut savoir que toutes les chaines identiques sont à la suite les une des autres !!
Ex :
tab[0] = a
tab[1] = a
tab[2] = a
tab[3] = b
tab[4] = b
tab[5] = c
lafolle24320
Messages postés406Date d'inscriptionsamedi 26 mars 2005StatutMembreDernière intervention29 juin 20097 23 mai 2007 à 16:45
Salut Ombitious
Ne pense tu pas qu'au lieu de faire le ArrayList, il devrait faire un HashSet, comme çà il s'évite toute la phase de recherche des doublons ? non ?
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 24 mai 2007 à 15:02
Salut:
Lafolle24320 >> Tu as encore parfaitement raison essentiellement pour 2 choses:
1. en C/C++, Pascal ou dans toute autre langage procédurale:
On décremente la taille du tableau après chaque décalage, ici en java c'est impossible. (length--)
2. Prendre la chaine vide "" comme marqueur pour effacer les doublons n'est pas une solution générique mais plutôt étroite comme solution, et si le tableau contient cette chaine vide "" quelle chaine choisir pour effacer les doublons sans que que cette dernière ne figure déja dans le tableau.
Les choses tend à devenir complexes alors qu'elles ne le sont pas en réalité.
J'espère avoir était clair.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Ombitious_Developper
Messages postés2333Date d'inscriptionsamedi 28 février 2004StatutMembreDernière intervention26 juillet 201338 23 mai 2007 à 16:35
Salut:
Dernière correction (ICA)
JDK 1.4
import java.util.*;
String [] tokens = {"...", "....", "", "", ""};
ArrayList result = new ArrayList ();
for (int i = 0; i < tokens.length; ++i) {
result.add (tokens [i]);
}
Collections.sort (result);
for (int i = 0; i < result.size () - 1; ++i) {
int j = i + 1;
while (((String)result.get (i)).equals ((String)result.get (j))) {
result.remove (j);
++j;
}
}
tokens = new String [result.size ()];
for (int i = 0; i <
result.size ()
; ++i) {
tokens [i] = (String)result.get (i);
}
JDK 1.5 ou plus
String [] tokens = {"...", "....", ....};
ArrayList<String> result = new ArrayList<String> ();
for (String e : tokens) {
result.add (e);
}
Collections.sort (result);
for (int i = 0; i < result.size () - 1; ++i) {
int j = i + 1;
while (result.get (i).equals (result.get (j))) {
result.remove (j);
++j;
}
}
int n;tokens new String [n result.size ()];
for (int i = 0; i < n; ++i) {
tokens [i] = result.get (i);
}
lafolle24320
Messages postés406Date d'inscriptionsamedi 26 mars 2005StatutMembreDernière intervention29 juin 20097 24 mai 2007 à 14:46
je ne vois pas pourquoi vous vous entété à passer par un tableau . On est en java non? donc utilisons les objets existants : ainsi pour notre problème c'est un HashSet, je sais je suis un peu rébarbative mais puisque la technique existe et très simple à mettre en oeuvre pourquoi se compliquer la vie ... sinon on retourne faire du C