Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Destiny Rising: quando un gioco mobile supera il gioco originale
Destiny Rising: quando un gioco mobile supera il gioco originale
Tra il declino di Destiny 2 e la crisi di Bungie, il nuovo titolo mobile sviluppato da NetEase sorprende per profondità e varietà. Rising offre ciò che il live service di Bungie non riesce più a garantire, riportando i giocatori in un universo coerente. Un confronto che mette in luce i limiti tecnici e strategici dello studio di Bellevue
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo
Plaud Note Pro è un registratore digitale elegante e tascabile con app integrata che semplifica trascrizioni e riepiloghi, offre funzioni avanzate come template e note intelligenti, ma resta vincolato a un piano a pagamento per chi ne fa un uso intensivo
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy?
Google Pixel 10 è uno smartphone che unisce una fotocamera molto più versatile rispetto al passato grazie allo zoom ottico 5x, il supporto magnetico Pixelsnap e il nuovo chip Tensor G5. Il dispositivo porta Android 16 e funzionalità AI avanzate come Camera Coach, mantenendo il design caratteristico della serie Pixel con miglioramenti nelle prestazioni e nell'autonomia. In Italia, però, mancano diverse feature peculiari basate sull'AI.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 29-10-2006, 12:33   #1
leox@mitoalfaromeo
Senior Member
 
L'Avatar di leox@mitoalfaromeo
 
Iscritto dal: Dec 2005
Città: Ahimè..Bs ----------------------------------- Messaggi tot: 1000+
Messaggi: 772
[Java] devo creare un multiset...

Ciao
Sto convertendo un generatore di istanze pseudocasuali da c++ a java (per i noti problemi di ripetibilità del primo linguaggio)
ho quasi finito ma mi manca un ultimo step...

In c++ avevo usato un multiset per inserire quando mi serviva in una lista una serie di oggetti di tipo Event da me creato. Avevo ridefinito l'operatore < su questi oggetti in modo che confrontasse il campo Event.time. Nella pratica questa bella costruzione mi permetteva di inserire in lista gli eventi man mano che li generavo e di avere alla fine una lista cronologicamente ordinata...

Si può fare qualcosa del genere in java?? ho definito sulla classe Event il metodo isBefore() per l'ordinamento ma ora non saprei bene come fare... ho visto sulla doc del sito java che la classe multiset esiste ma non si capisce come costruirne un oggetto nè come specificare il metodo di ordinamento...

(non ditemi che devo fare un vettore e poi ordinarlo...)
__________________
11/2006-Inspiron6400 -t7200|2GB@533MHz|S-ATA 80gb@7200rpm|Ati X1400|9cell Battery||garanzia 3 anni On-Site NBD
ex: Toshiba M30-154 (PERCHE' NON COMPRARE TOSHIBA..LEGGI QUI) + P4 2.8@3,2GHz 1MB L2, Gigabyte 915p-duo,1GB DDR400 DualCh, gF 6600gt 128MB GDDR3 + Canon Ixus50 + Creative Muvo^2 1.5GB

Ultima modifica di leox@mitoalfaromeo : 29-10-2006 alle 12:35.
leox@mitoalfaromeo è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2006, 12:49   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Credo che tu possa usare un TreeSet. La cosa più simile a quanto hai fatto in C++ è dichiarare il tuo Event concretizzazione di Comparable<Event>. A questo punto dovrai dotare Event di un metodo:

Codice:
public int compareTo(Event that) {
   restituisce
        zero se this vale quanto that
        un numero minore di zero se this è minore di that
        un numero maggiore di zero se this è maggiore di that
}
Probabilmente farai il confronto dell'equivalente del campo time. Comunque sia, una volta che hai fatto diventare Event un Comparable, il metodo compareTo diventa la definizione dell'ordine naturale degli oggetti Event. E hai finito. TreeSet è uno dei tanti attrezzi che sanno cosa fare con elementi naturalmente ordinabili. Sa anche cosa fare con elementi non direttamente ordinabili ma è un altro paio di maniche.

Codice:
TreeSet<Event> eventSet = new TreeSet<Event>();
Quando aggiungi un Event ad eventSet TreeSet si occupera di fare in modo che lo scorrimento dell'insieme presenti quel dato evento in una posizione consona all'ordine naturale degli Event.

Il tutto a meno che io non abbia capito una mazza, nel qual caso scomparirò con una pernacchia e una piroetta .
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2006, 13:57   #3
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
nella documentazione ufficiale di java leggiti le info relative all'interfaccia Comparable che deve essere implementata dalla tua classe per poter definire un ordinamento naturale tra le istanze di tale classe. In tal modo potrai usare l'operatore > o < perchè il compilatore userà automaticamente il metodo compareTo (come detto da PGI-bis) da te creato perchè richiesto dall'interfaccia comparable
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2006, 14:20   #4
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
A meno che non abbiano introdotto una nuova regola per il linguaggio, se PGI-BIS avesse veramente detto "potrai usare l'operatore > o < perchè il compilatore userà automaticamente il metodo compareTo" allora PGI-Bis dovrebbe fare harakiri. Con la tastiera, perchè così fa più male.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2006, 14:28   #5
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
si scusate, ho detto una vaccata

cmq a scanso di equivoci citavo PGI-bis in merito al metodo compareTo, e basta
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2006, 15:06   #6
leox@mitoalfaromeo
Senior Member
 
L'Avatar di leox@mitoalfaromeo
 
Iscritto dal: Dec 2005
Città: Ahimè..Bs ----------------------------------- Messaggi tot: 1000+
Messaggi: 772
perdonatemi se dico vaccate, in fondo sono un povero ingegnere gestionale..

il primo step che dovevo fare, se ho capito bene, era quello di dichiarare la classe Event come un'estensione di Comparable... giusto?
quindi ho dichiarato:
Codice:
public class Event implements Comparable
ma mi ritorna un errore (che nei giorni scorsi già mi ha rotto le palle con Queue fino ad obbligarmi a rinunciare al suo uso...)
Codice:
jgenerator.Event is not abstract and does not override abstract method compareTo(java.lang.Object) in java.lang.Comparable
__________________
11/2006-Inspiron6400 -t7200|2GB@533MHz|S-ATA 80gb@7200rpm|Ati X1400|9cell Battery||garanzia 3 anni On-Site NBD
ex: Toshiba M30-154 (PERCHE' NON COMPRARE TOSHIBA..LEGGI QUI) + P4 2.8@3,2GHz 1MB L2, Gigabyte 915p-duo,1GB DDR400 DualCh, gF 6600gt 128MB GDDR3 + Canon Ixus50 + Creative Muvo^2 1.5GB
leox@mitoalfaromeo è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2006, 15:09   #7
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
credo ti stia dicendo che hai dichiarato che la tua classe avrebbe implementatao l'interfaccia comparable, ma per implementare tale interfaccia devi definire il metodo compareTo
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2006, 15:27   #8
leox@mitoalfaromeo
Senior Member
 
L'Avatar di leox@mitoalfaromeo
 
Iscritto dal: Dec 2005
Città: Ahimè..Bs ----------------------------------- Messaggi tot: 1000+
Messaggi: 772
purtroppo anche definendo il metodo compareTo non cambia nulla...
EDIT:
invece no!!!
bisognava dichiararlo così:
Codice:
public class Event implements Comparable<Event>
__________________
11/2006-Inspiron6400 -t7200|2GB@533MHz|S-ATA 80gb@7200rpm|Ati X1400|9cell Battery||garanzia 3 anni On-Site NBD
ex: Toshiba M30-154 (PERCHE' NON COMPRARE TOSHIBA..LEGGI QUI) + P4 2.8@3,2GHz 1MB L2, Gigabyte 915p-duo,1GB DDR400 DualCh, gF 6600gt 128MB GDDR3 + Canon Ixus50 + Creative Muvo^2 1.5GB

Ultima modifica di leox@mitoalfaromeo : 29-10-2006 alle 15:29.
leox@mitoalfaromeo è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2006, 15:36   #9
leox@mitoalfaromeo
Senior Member
 
L'Avatar di leox@mitoalfaromeo
 
Iscritto dal: Dec 2005
Città: Ahimè..Bs ----------------------------------- Messaggi tot: 1000+
Messaggi: 772
ma poi l'implementazione di compareTo come si fa?!?!
ho provato così:
Codice:
public int compareTo(Event e) {
        return this.time_when.compareTo(e.time_when);
    }
andrà bene??
__________________
11/2006-Inspiron6400 -t7200|2GB@533MHz|S-ATA 80gb@7200rpm|Ati X1400|9cell Battery||garanzia 3 anni On-Site NBD
ex: Toshiba M30-154 (PERCHE' NON COMPRARE TOSHIBA..LEGGI QUI) + P4 2.8@3,2GHz 1MB L2, Gigabyte 915p-duo,1GB DDR400 DualCh, gF 6600gt 128MB GDDR3 + Canon Ixus50 + Creative Muvo^2 1.5GB
leox@mitoalfaromeo è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2006, 15:38   #10
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
come avrai capito il metodo richiesto da un'interfaccia ha un descrittore dello scope del metodo, un tipo di dato da ritornare e una lista di argomenti che DEVONO essere rispettati e che sono definiti nell'interfaccia che implementi
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2006, 15:42   #11
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
Quote:
Originariamente inviato da leox@mitoalfaromeo
ma poi l'implementazione di compareTo come si fa?!?!
ho provato così:
Codice:
public int compareTo(Event e) {
        return this.time_when.compareTo(e.time_when);
    }
andrà bene??

allora, in soldoni il metodo compareTo deve ritornare un intero >0 se this è concettualmente maggiore dell'argomento del metodo, <0 se this è concettualmente minore di bla bla e =0 se le due entità sono concettualmenti uguali. in particolare compareTo deve tornare 0 se e solo se il metodo equals() dell'interfaccia comparable torna true. trovi questi dettami nella doc ufficiale dell'interfaccia comparable.

se il membro time_when ammette un metodo compareTo coretto, direi che quello che hai scritto va benissimo
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2006, 16:05   #12
leox@mitoalfaromeo
Senior Member
 
L'Avatar di leox@mitoalfaromeo
 
Iscritto dal: Dec 2005
Città: Ahimè..Bs ----------------------------------- Messaggi tot: 1000+
Messaggi: 772
Quote:
Originariamente inviato da mad_hhatter
allora, in soldoni il metodo compareTo deve ritornare un intero >0 se this è concettualmente maggiore dell'argomento del metodo, <0 se this è concettualmente minore di bla bla e =0 se le due entità sono concettualmenti uguali. in particolare compareTo deve tornare 0 se e solo se il metodo equals() dell'interfaccia comparable torna true. trovi questi dettami nella doc ufficiale dell'interfaccia comparable.

se il membro time_when ammette un metodo compareTo coretto, direi che quello che hai scritto va benissimo
bè si.. time_when è fondamentalmente un intero quindi dovrebbe funzionare....
ora cmq ho un altro maledettissimo problema... devo stampare gli eventi nel TreeSet ma non capisco come fare... perchè il maledetto non ha un metodo che restituisce l'elemento i-esimo, ma semplicemente first() o last()...
__________________
11/2006-Inspiron6400 -t7200|2GB@533MHz|S-ATA 80gb@7200rpm|Ati X1400|9cell Battery||garanzia 3 anni On-Site NBD
ex: Toshiba M30-154 (PERCHE' NON COMPRARE TOSHIBA..LEGGI QUI) + P4 2.8@3,2GHz 1MB L2, Gigabyte 915p-duo,1GB DDR400 DualCh, gF 6600gt 128MB GDDR3 + Canon Ixus50 + Creative Muvo^2 1.5GB
leox@mitoalfaromeo è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2006, 16:10   #13
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
http://java.sun.com/j2se/1.5.0/docs/...l/TreeSet.html

guarda il metodo iterator()

per jdk 1.4.2 : http://java.sun.com/j2se/1.4.2/docs/...l/TreeSet.html
stesso metodo

Ultima modifica di mad_hhatter : 29-10-2006 alle 16:13.
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2006, 16:56   #14
leox@mitoalfaromeo
Senior Member
 
L'Avatar di leox@mitoalfaromeo
 
Iscritto dal: Dec 2005
Città: Ahimè..Bs ----------------------------------- Messaggi tot: 1000+
Messaggi: 772
Quote:
Originariamente inviato da mad_hhatter
in realtà l'avevo visto... ma non capivo e tuttora non capisco come usarlo...

ho provvisoriamente risolto in questo modo:
Codice:
Event[] outBuf= new Event[eventSet.size()];
        eventSet.toArray(outBuf);
        for(int i=0; i<outBuf.length; i++){
            System.out.println(outBuf[i].toString());}
dove eventSet è il TreeSet... forse non è particolarmente elegante ma funziona

in particolare ho potuto verificare che l'ordinamento viene fatto correttamente in base al tempo!!

GRAZIE 1000 A TUTTI.. siete stati preziosissimi, vi citerò nei ringraziamenti della tesi
__________________
11/2006-Inspiron6400 -t7200|2GB@533MHz|S-ATA 80gb@7200rpm|Ati X1400|9cell Battery||garanzia 3 anni On-Site NBD
ex: Toshiba M30-154 (PERCHE' NON COMPRARE TOSHIBA..LEGGI QUI) + P4 2.8@3,2GHz 1MB L2, Gigabyte 915p-duo,1GB DDR400 DualCh, gF 6600gt 128MB GDDR3 + Canon Ixus50 + Creative Muvo^2 1.5GB

Ultima modifica di leox@mitoalfaromeo : 29-10-2006 alle 16:59.
leox@mitoalfaromeo è offline   Rispondi citando il messaggio o parte di esso
Old 29-10-2006, 17:10   #15
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
in bocca al lupo
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2006, 11:56   #16
lovaz
Senior Member
 
L'Avatar di lovaz
 
Iscritto dal: Jul 2002
Messaggi: 4334
Dovrebbe funzionare anche così, non serve convertirlo in array:
Codice:
for( Event e : eventSet )
    System.out.println( e );
lovaz è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2006, 16:47   #17
leox@mitoalfaromeo
Senior Member
 
L'Avatar di leox@mitoalfaromeo
 
Iscritto dal: Dec 2005
Città: Ahimè..Bs ----------------------------------- Messaggi tot: 1000+
Messaggi: 772
Quote:
Originariamente inviato da lovaz
Dovrebbe funzionare anche così, non serve convertirlo in array:
Codice:
for( Event e : eventSet )
    System.out.println( e );
semmai
Codice:
for( Event e : eventSet )
    System.out.println( e.toString() );
provo, poi vi dirò
__________________
11/2006-Inspiron6400 -t7200|2GB@533MHz|S-ATA 80gb@7200rpm|Ati X1400|9cell Battery||garanzia 3 anni On-Site NBD
ex: Toshiba M30-154 (PERCHE' NON COMPRARE TOSHIBA..LEGGI QUI) + P4 2.8@3,2GHz 1MB L2, Gigabyte 915p-duo,1GB DDR400 DualCh, gF 6600gt 128MB GDDR3 + Canon Ixus50 + Creative Muvo^2 1.5GB
leox@mitoalfaromeo è offline   Rispondi citando il messaggio o parte di esso
Old 30-10-2006, 21:10   #18
mad_hhatter
Senior Member
 
L'Avatar di mad_hhatter
 
Iscritto dal: Oct 2006
Messaggi: 1105
quando fai print(e) il compilatore chiama automaticamente il corrispondente metodo toString()... stavolta sono sicuro (quasi )
mad_hhatter è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2006, 20:17   #19
leox@mitoalfaromeo
Senior Member
 
L'Avatar di leox@mitoalfaromeo
 
Iscritto dal: Dec 2005
Città: Ahimè..Bs ----------------------------------- Messaggi tot: 1000+
Messaggi: 772
allora miei cari... oggi sono stato a fare 2 chiacchiere col prof e tra le altre cose ho risolto il problema dell'accesso agli elementi del treeSet...

la chiave era effettivamente il metodo iterator().
In particolare bisogna creare un oggetto di tipo Iterator che poi supporterà i metodi Next() che restituisce l'elemento successivo e HasNext() che è un booleano per trovare la fine del vettore..
è una cosa nuova di java 1.5.

quindi il mio ciclo di stampa sul treeSet è venuto così:
Codice:
for(Iterator i=j.eventSet.iterator(); i.hasNext(); )
            System.out.println(i.next());
e l'amico mad aveva ragione sul fatto che non è necessario chiamare toString() al momento della stampa perchè lo capisce da sè!
__________________
11/2006-Inspiron6400 -t7200|2GB@533MHz|S-ATA 80gb@7200rpm|Ati X1400|9cell Battery||garanzia 3 anni On-Site NBD
ex: Toshiba M30-154 (PERCHE' NON COMPRARE TOSHIBA..LEGGI QUI) + P4 2.8@3,2GHz 1MB L2, Gigabyte 915p-duo,1GB DDR400 DualCh, gF 6600gt 128MB GDDR3 + Canon Ixus50 + Creative Muvo^2 1.5GB
leox@mitoalfaromeo è offline   Rispondi citando il messaggio o parte di esso
Old 03-11-2006, 21:45   #20
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Quote:
Originariamente inviato da leox@mitoalfaromeo
allora miei cari... oggi sono stato a fare 2 chiacchiere col prof e tra le altre cose ho risolto il problema dell'accesso agli elementi del treeSet...

la chiave era effettivamente il metodo iterator().
In particolare bisogna creare un oggetto di tipo Iterator che poi supporterà i metodi Next() che restituisce l'elemento successivo e HasNext() che è un booleano per trovare la fine del vettore..
è una cosa nuova di java 1.5.
Di al tuo professore che è ora che si aggiorni. Iterator c'è da Java 1.2 (praticamente da poco dopo che Noè scese dalla barca ).

Quello che c'è in Java5 è Iterable che è uno dei mezzi che ti consente di usare il ciclo foreach proposto da Lovaz e che, a questo punto, suppongo che tu debba usare.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Destiny Rising: quando un gioco mobile supera il gioco originale Destiny Rising: quando un gioco mobile supera il...
Plaud Note Pro convince per qualità e integrazione, ma l’abbonamento resta un ostacolo Plaud Note Pro convince per qualità e int...
Google Pixel 10 è compatto e ha uno zoom 5x a 899€: basta per essere un best-buy? Google Pixel 10 è compatto e ha uno zoom ...
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre Prova GeForce NOW upgrade Blackwell: il cloud ga...
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco Ecovacs Deebot X11 Omnicyclone: niente più...
RoboBall è un robot a forma di pa...
Nothing guarda al futuro: nuovi finanzia...
Realme punta sulla fascia bassa: arriva ...
Interlune creerà un centro di ric...
Stop Killing Games: 97% delle firme conv...
La GTX 2080 Ti mai arrivata sul mercato,...
Hoolow Knight: Silksong, il gioco che a ...
Duolingo crolla in Borsa: la minaccia ar...
Battlefield 6: i giocatori console potra...
Citroen Racing, la marca ritorna alle co...
Windows 10 ESU: come partecipare al prog...
ASUS Vivobook 16X a meno di 470€ su Amaz...
Con Agent Payments Protocol di Google gl...
Windows 10 muore, gli attivisti insorgon...
NVIDIA sarà il primo cliente di T...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 06:23.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Served by www3v