Torna indietro   Hardware Upgrade Forum > Software > Programmazione

DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker
Analizziamo nel dettaglio DJI RS 5, l'ultimo arrivato della famiglia Ronin progettato per videomaker solisti e piccoli studi. Tra tracciamento intelligente migliorato e ricarica ultra rapida, scopriamo come questo gimbal eleva la qualità delle produzioni.
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming
AMD Ryzen 7 9850X3D è la nuova CPU gaming di riferimento grazie alla 3D V-Cache di seconda generazione e frequenze fino a 5,6 GHz. Nei test offre prestazioni superiori a 9800X3D e 7800X3D, confermando la leadership AMD nel gaming su PC.
Le soluzioni FSP per il 2026: potenza e IA al centro
Le soluzioni FSP per il 2026: potenza e IA al centro
In occasione del Tech Tour 2025 della European Hardware Association abbiamo incontrato a Taiwan FSP, azienda impegnata nella produzione di alimentatori, chassis e soluzioni di raffreddamento tanto per clienti OEM come a proprio marchio. Potenze sempre più elevate negli alimentatori per far fronte alle necessità delle elaborazioni di intelligenza artificiale.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 09-03-2012, 14:10   #1
guylmaster
Senior Member
 
L'Avatar di guylmaster
 
Iscritto dal: Aug 2002
Messaggi: 2518
[Java] Hasmap e containsKey

Salve a tutti,
se ho un hasmap dove la chiave è una mia classe Cella che si può contraddistingue univocamente da attibruti ovvero Latitudine e Longitudine che sono due double.

Come faccio a dire che il containsKey di questa hasmap debba controllare appunto questi due valori di longitudine e latitudine? Perché di base sugli oggetti sembra che agisca solo sul riferimento, filava tutto liscio solo se lavoravo con chiavi di tipo primitivo.

Vi ringrazio in anticipo,
guylmaster
guylmaster è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2012, 14:49   #2
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2787
In Cella devi definire l'override dei metodi hashCode ed equals in modo appropriato.

Fonte:
Quote:
Many methods in Collections Framework interfaces are defined in terms of the equals method. For example, the specification for the contains(Object key) method says: "returns true if and only if this map contain a mapping for a key k such that (key==null ? k==null : key.equals(k))." This specification should not be construed to imply that invoking Map.containsKey with a non-null argument key will cause key.equals(k) to be invoked for any key k. Implementations are free to implement optimizations whereby the equals invocation is avoided, for example, by first comparing the hash codes of the two keys. (The Object.hashCode() specification guarantees that two objects with unequal hash codes cannot be equal.) More generally, implementations of the various Collections Framework interfaces are free to take advantage of the specified behavior of underlying Object methods wherever the implementor deems it appropriate.
http://docs.oracle.com/javase/1.5.0/.../util/Map.html
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 09-03-2012, 15:01   #3
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Se usi classi custom come chiavi delle Collection devi fornire una adeguata implementazione dei metodi equals e hashCode.
Nel tuo caso, se l'identità di una istanza di Cella è univocamente definita dal valore di latitutdine e longitudine allora dovrai implementare equals e hashCode tenendo conto di questo, dunque dovrai dire che:

1) una Cella A equals un'altra Cella B se e solo se i valori latitudine e longitudine di A e di B sono tra loro uguali.

2) l'hashCode di una Cella è calcolato in base al valore di latitudine e longitune di quella Cella.

3) per quanto detto in 1 e 2 segue che se una Cella A equals un'altra Cella B allora l'hashCode di A deve essere uguale all'hashCode di B.

In Java per dire queste tre cose devi implementare adeguatamente i metodi equals & hashCode; se non lo fai le istanze della tua classe Cella ereditano (ovviamente) i comportamenti definiti in Object.

P.S.: dato che longitudine e latitudine sono dei double, nell'implementare equals e hashCode ti tornerà utile il metodo statico Double.doubleToLongBits (hashCode deve restituire un long). Inoltre puoi sbirciare i sorgenti di Double per vedere come implementa i suoi equals e hashCode, tu dovresti fare una cosa simile, solo che hai due double invece che uno
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)

Ultima modifica di banryu79 : 09-03-2012 alle 15:37.
banryu79 è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequenze al top per il gaming AMD Ryzen 7 9850X3D: Zen 5, 3D V-Cache e frequen...
Le soluzioni FSP per il 2026: potenza e IA al centro Le soluzioni FSP per il 2026: potenza e IA al ce...
AWS annuncia European Sovereign Cloud, il cloud sovrano per convincere l'Europa AWS annuncia European Sovereign Cloud, il cloud ...
Redmi Note 15 Pro+ 5G: autonomia monstre e display luminoso, ma il prezzo è alto Redmi Note 15 Pro+ 5G: autonomia monstre e displ...
DeepL sempre più evoluto: arriva ...
Un vecchio assegno venduto a 4.800 volte...
Portatili Dell 16 in offerta su Amazon: ...
Amazfit punta ancora più in alto:...
Deep tech e venture capital: ScaleUp Lab...
GWM ha creato un font specifico per i di...
Oro rosa e charm Les Néréi...
La XPeng P7+ è salpata in direzio...
Quali sono i componenti più affid...
Amazon Haul raddoppia lo sconto: -30% su...
Germania e Danimarca accelerano sull'eol...
Azienda cinese che chiede aiuto ad una a...
Per aumentare la competitività ne...
I nuovi MacBook con M5 Pro e Max usciran...
Mass Effect 5 dovrebbe ispirarsi di pi&u...
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: 18:16.


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