Selection element liste identique

Selection element liste identique - Java - Programmation

Marsh Posté le 05-02-2010 à 16:02:26    

Bonjour à tous,
 
Voila mon problème, j'ai une Liste java de String qui contient un identifiant toutes les 3 "cases" (et qui a une taille egal à un multiple de 3).
ainsi ma liste peut se presenter de ces facons la:
X X id1 X X id2 X X id3 X X id4
ou
X X id1 X X id1 X X id2 X X id2
ou encore
X X id1 X X id2 X X id2
etc...
Je souhaiterai recupere (sous la forme d'un integer) le nombre d'id différent...
ainsi par rapport à mes exemples ci dessus je devrais recuperer respectivement:
4
2
2
J'arrive à implementer une methode mais ca ne marche pas ds ts les cas, je recherche donc de l'aide pour une methode générique....
Merci bcp de votre aide,
A bientot
thomas

Reply

Marsh Posté le 05-02-2010 à 16:02:26   

Reply

Marsh Posté le 05-02-2010 à 16:11:56    

Code :
  1. public int countID(List<String> elements)
  2. {
  3.  Set<String> idSet = new HashSet<String>();
  4.  for (String elt  : elements) {
  5.   if(elt.startsWith("id" )) {
  6.    idSet.add(elt);
  7.   }
  8.  }
  9.  return idSet.size();
  10. }

Reply

Marsh Posté le 05-02-2010 à 16:15:30    

Merci de ton aide, mais a vrai dire je les ai appellé "id" pour l'exemple, il s'agit en fait d'une longue serie de chiffre aléatoire...je ne peux donc pas me baser sur la chaine de caractère "id"...de plus j'ai l'impression dans tous les cas que ta methode allait me retourner tous les "id" de la liste et pas les id distincts...

Reply

Marsh Posté le 05-02-2010 à 16:20:35    

Pareil  :o  

Code :
  1. public static int counterElementDistinctTouteLes3Positions(List<String> elements) {
  2.  Set<String> idSet = new HashSet<String>();
  3.  for (int i = 2; i < elements.size(); i += 3) {
  4.   String elt = elements.get(i);
  5.   idSet.add(elt);
  6.  }
  7.  return idSet.size();
  8. }

Reply

Marsh Posté le 05-02-2010 à 16:26:06    

ok parfait merci...Mais quelle est donc la particularité des HashSet?

Reply

Marsh Posté le 05-02-2010 à 16:28:23    

T'es mignon, mais lis un peu la javadoc et fais des recherches sur Google.
Déjà que je te fais tes devoirs
 ;)

Reply

Marsh Posté le 05-02-2010 à 16:40:44    

haha ok!
Je te demande un autre truc maintenant mais un peu plus compliqué si ca ne te derange pas...
En fait repartons de mes listes initiales par exemple:
Data1 Data2 id1 Data3 Data4 id2 Data5 Data6 id3 Data7 Data8 id4
ou
Data1 Data2 id1 Data3 Data4 id1 Data5 Data6 id2 Data7 Data8 id2
ou encore
Data1 Data2 id1 Data3 Data4 id2 Data5 Data6 id2
Et bien je voudrai recuperer une liste contenant respectivement:
 - id1 Data1 Data2 puis appeler une fonction avec cette liste en parametre puis id2 Data3 Data4 puis appeler une fonction avec ces parametre (donc remove des precedents par exemple)
Etc...vois tu une facon simple...?
Merci encore,
Thomas

Reply

Marsh Posté le 05-02-2010 à 16:54:04    

Rien compris :/

Reply

Marsh Posté le 05-02-2010 à 17:09:47    

hmmm ok en gros je pars d'une liste de cette forme:
"P1" "toto" "ID1" "P2" "tati" "ID1" "P1" "tata" "ID2"
L'idee est d'appeler une methode un nombre de fois defini par ce que tu m'a decrit precedemment (cad le nombre d'id distincts) qui prend en parametre une liste (ou tableau ou autre) qui aura, dans cette exemple cette forme:
"ID1" "P1" "toto" "P2" "tati", puis de la rappeler avec cette liste:
"ID2" "P1" "tata"
Est ce que tu m'a mieux compris...?
Merci bcp,

Reply

Marsh Posté le 05-02-2010 à 17:25:07    

Manifestement ce que tu demandes c'est qu'on te fasse tes devoirs scolaires.  
Une fois maitrisées les notions de base du langage (ce qui est le cas si tu as compris le bout de code plus haut), à toi de te creuser la tête pour faire ce que tu veux. C'est uniquement de l'algorithmie, donc de la réflexion.
 
Donc regarde un peu la doc si tu coinces sur quelque chose, réfléchis, essaie de pondre un truc, et si vraiment tu bloques soumets nous ce que tu as déjà fait et on t'aidera.
 
Merci.


---------------
Réalisation amplis classe D / T      Topic .Net - C# @ Prog
Reply

Marsh Posté le 05-02-2010 à 17:25:07   

Reply

Marsh Posté le 05-02-2010 à 17:30:40    

Alors tout d'abord je n'ai plus de devoir et crois moi j'ai mis du tps avant de poster sur ce forum...si je le fait c'est vraiment parce que je bloque.
J'ai une methode qui marche mais que dans des cas particuliers alors qu'il m'en faudrait une qui marche dans un cas general.
Merci encore

Reply

Marsh Posté le 05-02-2010 à 17:41:30    

Je crois que tu galères surtout parce que tu vas dans la mauvaise direction en terme d'algo.
T'as exposé 2 fois ton problème mais je ne suis pas sur de comprendre
Indique plutot en grosse mailles le besoin de ton programme car les petits bouts de code que tu demandes ressemble effectivement à des petits exercices scolaire quand on débute la programmation

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed