Tirer hasard les éléments d'un vecteur java

Résolu
keurdange Messages postés 816 Statut Membre -  
keurdange Messages postés 816 Statut Membre -
Bonjour,

Voilà, tout est dit dans le titre: comment tirer au hasard les éléments d'un vecteur (vector) sachant qu'on ajoute des string?

Merci.



Dieu n'a fait qu'ébaucher l'homme, c'est sur terre que chacun se crèe

1 réponse

  1. KX Messages postés 19031 Statut Modérateur 3 020
     
    Tu choisis un nombre aléatoire (voir Random.getInt) entre 0 et size()-1 et tu récupères la valeur avec get... Bref rien de bien compliqué !
    Remarque (toujours dans la documentation) : "If a thread-safe implementation is not needed, it is recommended to use ArrayList in place of Vector"
    0
    1. keurdange Messages postés 816 Statut Membre 232
       
      Thks mais je comprends toujours pas. J'ai même consulté l'API sans y trouvé ce que je cherchai. Peux tu me donner un petit exemple stp?
      0
    2. KX Messages postés 19031 Statut Modérateur 3 020
       
      Petit exemple qui reprend exactement ce que j'ai dit plus haut (mais générique car c'est plus joli ^^)

      private static final Random rd = new Random();
      
      public static <E> E ploufplouf(List<E> list)
      {
      	return list.get(rd.nextInt(list.size()));
      }
      
      public static void main(String...args)
      {
      	Vector<String> v = new Vector<String>();
      		v.add("tata");
      		v.add("tete");
      		v.add("titi");
      		v.add("toto");
      		v.add("tutu");
      		
      	System.out.println(ploufplouf(v));
      	
      	ArrayList<String> al = new ArrayList<String>();
      		al.add("papa");
      		al.add("pepe");
      		al.add("pipi");
      		al.add("popo");
      		al.add("pupu");
      
      	System.out.println(ploufplouf(al));
      }
      0
    3. keurdange Messages postés 816 Statut Membre 232
       
      A quoi servent les <E> et E?
      0
    4. KX Messages postés 19031 Statut Modérateur 3 020
       
      C'est pour être générique. Regarde la documentation par exemple Vector, il y a plein de <E> aussi, ça te permet de mettre n'importe quelle classe à la place...
      0
    5. keurdange Messages postés 816 Statut Membre 232
       
      Sorry si je ne comprend pas tout de suite. Ca permet de mettre n'importe quelle classe à la place de......?
      0