Torna indietro   Hardware Upgrade Forum > Software > Programmazione

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.
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
Prova GeForce NOW upgrade Blackwell: il cloud gaming cambia per sempre
L'abbonamento Ultimate di GeForce NOW ora comprende la nuova architettura Blackwell RTX con GPU RTX 5080 che garantisce prestazioni tre volte superiori alla precedente generazione. Non si tratta solo di velocità, ma di un'esperienza di gioco migliorata con nuove tecnologie di streaming e un catalogo giochi raddoppiato grazie alla funzione Install-to-Play
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Ecovacs Deebot X11 Omnicyclone: niente più sacchetto per lo sporco
Deebot X11 Omnicyclone implementa tutte le ultime tecnologie Ecovacs per l'aspirazione dei pavimenti di casa e il loro lavaggio, con una novità: nella base di ricarica non c'è più il sacchetto di raccolta dello sporco, sostituito da un aspirapolvere ciclonico che accumula tutto in un contenitore rigido
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


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ù...
Narwal Flow: con il mocio orizzontale lava i pavimenti al meglio Narwal Flow: con il mocio orizzontale lava i pav...
Panasonic 55Z95BEG cala gli assi: pannello Tandem e audio senza compromessi Panasonic 55Z95BEG cala gli assi: pannello Tande...
NVIDIA arruola Colin King: Intel perde u...
GeForce RTX 6090: Rubin CPX potrebbe ess...
Iliad: si consolida la partnership tecno...
Il SoC a 2 nm di Samsung non sfigura nel...
Prezzo shock per i Galaxy Buds FE + nuov...
Il nuovo SoC di Qualcomm vuole stupire: ...
Offerta lampo per pulire l'auto: aspirap...
I robotaxi di Amazon entrano in azione: ...
ECOVACS DEEBOT T50 PRO OMNI Gen2 domina ...
iPhone 17 Pro su Amazon: tutti i colori,...
Disney Plus da 2,99 euro al mese per 3 m...
Nuovo test di accensione dei motori per ...
Novità dalle analisi dell'asteroi...
La PS6 sarà più potente del previsto: ec...
Sony svela Xperia 10 VII: è il nu...
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: 07:49.


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