Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Quattro modi di indossarlo, stessa app del Plaud Note Pro e integrazione con il desktop. Il registratore IA da indossare di Plaud eccelle in mobilità, ma resta vincolato all'abbonamento ed è facile da perdere
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Xiaomi ha portato Redmi Watch 6 anche sul mercato italiano, puntando su un display AMOLED da 2,07 pollici con picco di luminosità a 2000 nit, frame in alluminio da 9,9mm e un'autonomia dichiarata di 12 giorni. Lo smartwatch gira su HyperOS 3 e integra GPS, Bluetooth 5.4 e oltre 150 sport mode. Il tutto a meno di 100 euro
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Con 22 tasti, il pulsante 5D, lo Shift Mode e il sensore PixArt 3395 da 26.000 DPI, il nuovo mouse wireless di Mad Catz si rivolge in modo preciso ai giocatori di MMO e RPG. Ma chi conosce già il R.A.T. 8+ ADV si accorgerà subito di quanto i due prodotti condividano, e di dove invece divergono
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 25-09-2006, 13:48   #1
Kurogane
Senior Member
 
Iscritto dal: Feb 2005
Messaggi: 377
[JAVA] Ordinare mappa mediante comparator scelto da me

Salve, vorrei realizzare una mappa di denari ordinata secondo un mio criterio, cioè dalla moneta con valore + grande a quella con valore più piccolo. Pensavo di usare

dove c'è il metodo di aggiungi, dopo aver fatto lista.put(d);
Collections.sort(lista, cmp);

inoltre la classe cmp
class cmp implements Comparator{

public int compare(Object o1, Object o2){
Denaro d1=(Denaro) o1;
Denaro d2=(Denaro) o2;

if((d2.getValore() - d1.getValore()) < 0)
return -1;

if((d2.getValore() - d1.getValore()) == 0)
return 0;

return 1;
}
}

solo che non funziona xkè risulta che tale metodo non è presente in Collections dove sbaglio?
Kurogane è offline   Rispondi citando il messaggio o parte di esso
Old 25-09-2006, 14:20   #2
Andrea16v
Senior Member
 
L'Avatar di Andrea16v
 
Iscritto dal: Mar 2003
Messaggi: 3852
In attesa di qualcuno che ci capisce veramente, io ti dico che a me non piace il
"Collections.sort(lista, cmp);"
io di solito uso una cosa del tipo:
"Collections.sort(lista, new cmp());", dove cmp è una classe con il proprio CompareTo.

Prendi tutto con le pinze, e con i guanti...
__________________
Cerco fotocamera con buono zoom!! CLICCA!
° Moderatore del Forum Ufficiale di ElaborarE (responsabile sezione HI-FI e Car Audio) °
Andrea16v è offline   Rispondi citando il messaggio o parte di esso
Old 25-09-2006, 19:35   #3
Mixmar
Senior Member
 
L'Avatar di Mixmar
 
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
Quote:
Originariamente inviato da Andrea16v
In attesa di qualcuno che ci capisce veramente, io ti dico che a me non piace il
"Collections.sort(lista, cmp);"
io di solito uso una cosa del tipo:
"Collections.sort(lista, new cmp());", dove cmp è una classe con il proprio CompareTo.

Prendi tutto con le pinze, e con i guanti...
Penso che Andrea16v ci abbia visto giusto: il compilatore ti avvisa che il metodo non è presente, perchè ai suoi occhi stai cercando di chiamare il metodo:

Codice:
Collections.sort(List, Class);
mentre lui si aspetta un

Codice:
Collections.sort(List, Comparator);
cioè, stai passando una classe al posto di una istanza.

Comunque, non so se sono io "quello che ci capisce"...
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur
Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N
Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN
Mixmar è offline   Rispondi citando il messaggio o parte di esso
Old 26-09-2006, 04:37   #4
Kurogane
Senior Member
 
Iscritto dal: Feb 2005
Messaggi: 377
come dovrei scrivere per creare un metodo comparator?
Kurogane è offline   Rispondi citando il messaggio o parte di esso
Old 26-09-2006, 11:04   #5
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Mantenendo il codice che hai scritto:

Collections.sort(lista, new cmp());
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 26-09-2006, 11:10   #6
Andrea16v
Senior Member
 
L'Avatar di Andrea16v
 
Iscritto dal: Mar 2003
Messaggi: 3852
Quote:
Originariamente inviato da Kurogane
come dovrei scrivere per creare un metodo comparator?
Te l'ho scritto sopra, devi cambiare l'istruzione di ordinamento che hai messo te con:
Collections.sort(lista, new cmp());

così a occhio non ci sono altre modifiche da fare, fai una prova..
__________________
Cerco fotocamera con buono zoom!! CLICCA!
° Moderatore del Forum Ufficiale di ElaborarE (responsabile sezione HI-FI e Car Audio) °
Andrea16v è offline   Rispondi citando il messaggio o parte di esso
Old 26-09-2006, 15:49   #7
Kurogane
Senior Member
 
Iscritto dal: Feb 2005
Messaggi: 377
ma io l'ho fatto, ma mi da quest'errore:
D:\poo\app260706\SoldiMap.java:29: cannot find symbol
symbol : method sort(java.util.Map<java.lang.Double,poo.app260706.Denaro>,poo.app260706.SoldiMap.cmp)
location: class java.util.Collections
Collections.sort(lista, new cmp());
^
Kurogane è offline   Rispondi citando il messaggio o parte di esso
Old 26-09-2006, 16:05   #8
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Se "lista" è una lista (List, figli & nipoti) è un paio di maniche.
Se "lista" è una mappa (Map, figli & nipoti) è un'altro paio di maniche (anzi parliamo proprio di un'altra camicia).

Il compilatore, che è un chiacchierone, ci dice che "lista" è una mappa. Le chiavi sono Double e i valori sono Denari.

Se nell'elemento E(K, V) della mappa la chiave K è il valore della moneta V puoi ottenere il risultato che cerchi usando la classe cmp che hai creato (cioè un comparator) e, anzichè Collections.sort, dire:

Codice:
Comparator<Double> cmp = new Comparator<Double>() {
    public int compareTo(Double a, Double b) {
        //eccetera
    }
};
Map<Double, Denaro> sortedMap = new TreeMap<Double, Denaro>(cmp);
sortedMap.putAll(lista);
sortedMap conterrà a tutto quello che c'era in lista ma ordinato per chiave, secondo quanto imposto dal Comparator cmp.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 27-09-2006, 16:45   #9
porfax
Senior Member
 
Iscritto dal: Apr 2005
Messaggi: 898
Per ordinare le mappe con il comparator, conviene farsi restituire il keyset e poi richiamare il collections.sort(keyset, new comparator())
porfax è offline   Rispondi citando il messaggio o parte di esso
Old 27-09-2006, 17:03   #10
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Però il risultato non è una mappa ordinata.
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 27-09-2006, 17:25   #11
Angus
Senior Member
 
L'Avatar di Angus
 
Iscritto dal: Dec 2001
Città: Milano
Messaggi: 545
Non puoi usare TreeMap?
__________________
Angus the Hunter @ Realm of magic | Angus Young @ Batracer
°SetiEmperor°| Ninja Technologies
{ qualunque cosa sia, è veloce e fa male (cit.) }
Angus è offline   Rispondi citando il messaggio o parte di esso
Old 27-09-2006, 17:32   #12
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Io mi sono perso. Ordiniamo una mappa, scorriamo in modo ordinato il contenuto di una mappa, creiamo una mappa ordinata o mappiamo una lista?
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 27-09-2006, 17:35   #13
Kurogane
Senior Member
 
Iscritto dal: Feb 2005
Messaggi: 377
una precisazione: la mappa deve essere ordinata dal denaro più grande a quello + piccolo. Si poteva anche usare una treemap, vero, ma entrambe usano l'ordine naturale. La domanda è, come cavolo faccio a inserire nell'ordine che voglio io?
Kurogane è offline   Rispondi citando il messaggio o parte di esso
Old 27-09-2006, 17:42   #14
Angus
Senior Member
 
L'Avatar di Angus
 
Iscritto dal: Dec 2001
Città: Milano
Messaggi: 545
Quote:
Originariamente inviato da Kurogane
una precisazione: la mappa deve essere ordinata dal denaro più grande a quello + piccolo. Si poteva anche usare una treemap, vero, ma entrambe usano l'ordine naturale. La domanda è, come cavolo faccio a inserire nell'ordine che voglio io?
usa il costruttore public TreeMap(Comparator<? super K> c)
__________________
Angus the Hunter @ Realm of magic | Angus Young @ Batracer
°SetiEmperor°| Ninja Technologies
{ qualunque cosa sia, è veloce e fa male (cit.) }
Angus è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC Radeon RX 9070 GRE, AMD la porta in tutto il mon...
Reolink OMVI 3i WiFi: videosorveglianza più intelligente e facile da usare Reolink OMVI 3i WiFi: videosorveglianza pi&ugrav...
Cooler Master svela GPU Shield, la nuova...
Samsung Galaxy S27 Pro: sarà lui ...
Così Google ha ottimizzato Chrome...
Xiaomi non cambia idea: il display poste...
LG presenta in Italia le gamme TV Micro ...
Sette anni dopo l'annuncio, The Wolf Amo...
'Non avrete aumenti': la decisione shock...
TIM lancia il Pass Mondiali DAZN: 104 pa...
Tesla Roadster, promessa o miraggio? La ...
Mark Hamilton, la tavola periodica del m...
Hanger 13 annuncia Uomo d'Onore: espansi...
La battaglia delle HBM4 entra nel vivo: ...
Dopo 12 anni torna Alien: Isolation. Ecc...
ADATA Trusta ridurrà i costi di i...
SpaceX fornirà 110.000 GPU NVIDIA...
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: 15:14.


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