Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici
DJI porta un importante aggiornamento alla sua linea di gimbal camera tascabili con Osmo Pocket 4: sensore CMOS da 1 pollice rinnovato, gamma dinamica a 14 stop, profilo colore D-Log a 10 bit, slow motion a 4K/240fps e 107 GB di archiviazione integrata. Un prodotto pensato per i creator avanzati, ma che convince anche per l'uso quotidiano
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori
Il primo headset open-back della linea INZONE arriva a 200 euro con driver derivati dalle cuffie da studio MDR-MV1 e un peso record di soli 199 grammi
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA
Al .NEXT 2026 di Chicago, Nutanix ha mostrato quanto sia cambiata: una piattaforma software che gestisce VM, container e carichi di lavoro IA ovunque, dall’on-premise al cloud pubblico. Con un’esecuzione rapidissima sulle partnership e sulla migrazione da VMware
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 24-05-2011, 16:27   #1
cifa
Member
 
Iscritto dal: Sep 2007
Messaggi: 59
[JAVA] Comparable ed interi

Salve a tutti ho un piccolo problemino, per utilità mi son creato una classe
Codice:
public class ListaOrdinata<Chiave, Valore>
che utilizzo sia con <String, Valore> che con <Integer, Valore>. Con String va tutto bene, ma con gli Integer agisce come se i numeri a singola cifra fossero > di quelli a doppia cifra.

Ecco i metodi che uso per l'insert "ordinato"

Codice:
		public boolean minore(Nodo<K,V> nodo) {
			return minore(nodo.chiave, chiave);
		}

		public boolean minore(K k1, K k2) {
			if (k1 == null) return false;
			if (k2 == null) return true;
			return (k1.toString().compareTo(k2.toString()) < 0 );
		}



Codice:
	

public void insert(Chiave k, Valore v) {
		testa = insert(k, v, testa);
	}

private Nodo<Chiave,Valore> insert(Chiave k,  Valore el, Nodo<Chiave,Valore> testa) {

		// caso 1: la lista e' vuota
		if (testa == null)
			return new Nodo<Chiave,Valore>(k,el);
		
		
		// caso 2: la chiave e' maggiore del primo elemento e un nuovo nodo va inserito prima
		if (testa.minore(k,testa.chiave)) {
			Nodo<Chiave,Valore> nuovo = new Nodo<Chiave,Valore>(k,el);
			nuovo.prox = testa;
			return nuovo;
		}

		// caso 3: l'elemento va inserito nel resto della lista
		testa.prox = insert(k, el, testa.prox);
		return testa;
	}

Come posso risolvere ?

Vi ringrazio
cifa è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2011, 16:53   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Il problema è che il PC non è abbastanza intelligente per capire da solo che se una stringa contiene un numero allora potresti volerlo ordinare per la quantità che esprime anziché per la sequenza di caratteri da cui è composto.

Detto altrimenti,

"10" > "9.5" ? no perché il carattere "1" vale meno del carattere "9"
10 > 9.5? sì perché 10 è maggiore di 9.5

Posto che si tratta di un problema già risolto nelle librerie standard, l'intoppo si aggirerebbe "parametrizzando" il confronto che fai nel metodo "minore", vale a dire considerando che tipi di dato diversi possono richiedere funzioni d'ordine diverse.

Dovresti cioè dire: se k1 e k2 esprimono dei numeri allora non uso un ordinamento lessicografico ma userò un ordinamento numerico, considerandoli come numeri (cioè li converti a Long o Double secondo i casi).

Da lì ti accorgerai che ci sono casi che richiedono un tanto di arbitrarietà: ad esempio una stringa e un numero o un JPanel e un Point. Come li ordini? Be', come preferisci.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2011, 17:34   #3
cifa
Member
 
Iscritto dal: Sep 2007
Messaggi: 59
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Il problema è che il PC non è abbastanza intelligente per capire da solo che se una stringa contiene un numero allora potresti volerlo ordinare per la quantità che esprime anziché per la sequenza di caratteri da cui è composto.

Detto altrimenti,

"10" > "9.5" ? no perché il carattere "1" vale meno del carattere "9"
10 > 9.5? sì perché 10 è maggiore di 9.5

Posto che si tratta di un problema già risolto nelle librerie standard, l'intoppo si aggirerebbe "parametrizzando" il confronto che fai nel metodo "minore", vale a dire considerando che tipi di dato diversi possono richiedere funzioni d'ordine diverse.

Dovresti cioè dire: se k1 e k2 esprimono dei numeri allora non uso un ordinamento lessicografico ma userò un ordinamento numerico, considerandoli come numeri (cioè li converti a Long o Double secondo i casi).

Da lì ti accorgerai che ci sono casi che richiedono un tanto di arbitrarietà: ad esempio una stringa e un numero o un JPanel e un Point. Come li ordini? Be', come preferisci.
Chiarissimo, grazie mille
cifa è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2011, 18:10   #4
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 12966
Non basterebbe evitare di usare il toString() in minore?

compareTo dovrebbe già includere queste cose, altrimenti a che servono le interfacce?
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2011, 19:11   #5
cifa
Member
 
Iscritto dal: Sep 2007
Messaggi: 59
Quote:
Originariamente inviato da WarDuck Guarda i messaggi
Non basterebbe evitare di usare il toString() in minore?

compareTo dovrebbe già includere queste cose, altrimenti a che servono le interfacce?
Eh no perchè compareTo potrebbe non esser definitio in K :\
cifa è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2011, 19:36   #6
Don[ITA]
Senior Member
 
L'Avatar di Don[ITA]
 
Iscritto dal: Jul 2006
Città: Bergamo
Messaggi: 401
Puoi dichiarare la tua chiave come Comparable, o come K extends Comparable, così sei certo che la tua chiave implementi il metodo compareTo
__________________
iMac 27" 5K
Don[ITA] è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2011, 19:42   #7
cifa
Member
 
Iscritto dal: Sep 2007
Messaggi: 59
Quote:
Originariamente inviato da Don[ITA] Guarda i messaggi
Puoi dichiarare la tua chiave come Comparable, o come K extends Comparable, così sei certo che la tua chiave implementi il metodo compareTo
Scusa la domanda, ma sono nuovo di Java ^^

Quindi dovrei fare una cosa del genere ?
Codice:
public class ListaOrdinata<Chiave extends Comparable, Valore>
?
cifa è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2011, 21:04   #8
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Puoi usare TreeMap, che è già incluso nelle librerie standard e funziona allo stesso modo.

Opzione che probabilmente risulterà allettante se consideri che la forma suggerita sarebbe precisamente:

Codice:
public class SortedList<K extends Comparable<? super K>, V> {
La ragione sta nelle 297 pagine dei Java Generics FAQ.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
Old 24-05-2011, 21:51   #9
cifa
Member
 
Iscritto dal: Sep 2007
Messaggi: 59
Quote:
Originariamente inviato da PGI-Bis Guarda i messaggi
Puoi usare TreeMap, che è già incluso nelle librerie standard e funziona allo stesso modo.

Opzione che probabilmente risulterà allettante se consideri che la forma suggerita sarebbe precisamente:

Codice:
public class SortedList<K extends Comparable<? super K>, V> {
La ragione sta nelle 297 pagine dei Java Generics FAQ.
Ti ringrazio, anche se tutto questo fa parte di un progetto universitario e non avendo ancora fatto alberi e mappe forse è meglio non utilizzarli. In ogni caso per curiosità personale vado a studiarmi TreeMap
cifa è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
Sony INZONE H6 Air: il primo headset open-back di Sony per giocatori Sony INZONE H6 Air: il primo headset open-back d...
Nutanix cambia pelle: dall’iperconvergenza alla piattaforma full stack per cloud ibrido e IA Nutanix cambia pelle: dall’iperconvergenza alla ...
Recensione Xiaomi Pad 8 Pro: potenza bruta e HyperOS 3 per sfidare la fascia alta Recensione Xiaomi Pad 8 Pro: potenza bruta e Hyp...
NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abbiamo provato il tris d'assi di NZXT NZXT H9 Flow RGB+, Kraken Elite 420 e F140X: abb...
Top 7 tech più venduti su Amazon ...
Stop alle app pesanti: Android 17 Beta 4...
Apple Watch Series 11 e SE 3 crollano su...
Opera Browser Connector: ChatGPT e Claud...
Nuova Opel Astra: maturità elettr...
Il film di Call of Duty ha finalmente un...
Tra nuove mappe e modalità: Battl...
Narwal Flow 2 ufficiale: 31000 Pa di asp...
GPT-Rosalind: OpenAI lancia il suo primo...
Meta aumenta i prezzi dei visori Meta Qu...
Metro 2039 annunciato con un trailer di ...
UMC aumenterà i prezzi dei wafer ...
Intel rafforza la divisione Foundry: arr...
Apple MacBook Pro 16'' M4 Max a 3.499€: ...
Apple ignora la crisi? Gli iPhone 18 Pro...
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: 11:11.


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