Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [java] Ordinamento casuale di ArrayList

    Ciao a tutti!

    Supponiamo di avere un'ArrayList mazzo composta da elementi di carte:

    ArrayList<carte> mazzo = new ArrayList<carte>(1);

    E che le carte siano definitite così:

    carte c1 = new carte("Carta1");
    carte c1 = new carte("Carta2");
    carte c1 = new carte("Carta3");
    ...

    (il costruttore di carta accetta una stringa e la associa alla variabile nome della classe carta).

    Quindi:
    mazzo.add(c1);
    mazzo.add(c2);
    ...

    Come posso realizzare un metodo mescolaMazzo(mazzo m) che restituisca la stessa arrayList ma con le carte mescolate? (ad esempio (mazzo.get(0)).nome restituisce carta3) Ho pensato ad alcuni algortimi abbastanza incasinati, ma forse nelle librerie Java c'è qualcosa di più veloce...

    Grazie!

  2. #2
    Ci sono un paio di metodi statici nella classe Collections che credo facciano al caso tuo:

    codice:
    static void shuffle(List list)
              Randomly permutes the specified list using a default source of randomness.
    
    static void shuffle(List list, Random rnd)
              Randomly permute the specified list using the specified source of randomness.
    Ciao,

  3. #3
    Grazie della risposta!

    Sembrano proprio quello che serve a me! Solo non ho capito su quale oggetto chiamare il metodo...
    Ho importato la libreria java.util.*

    mazzo.shuffle(mazzo)?
    Eclipse dà errore... Dici che è un metodo statico di Collection, ma ArrayList implementa Collection, quindi dovrebbe avere gli stessi metodi di Collection. O forse, essendo un metodo statico, non lo posso chiamare su un determinato oggetto ma dovrei fare qualcosa tipo ArrayList<carte>.shuffle(mazzo). Anche questo dà errore...
    Dove sbaglio?

    Grazie ancora!

  4. #4
    La classe è Collections (non l'interfaccia Collection, implementata dalle liste), ed è una classe che contiene una serie di metodi statici di utilità per ordinare, effettuare ricerche ed altre operazioni tipiche sulle Collection. Perciò i suoi metodi statici puoi invocarli solo direttamente su di essa:

    codice:
    Collections.shuffle(mazzo);
    Ciao,

  5. #5

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.