Diciamo che ho questo codice in Java:Un'idoneità di test del metodo() di hash di Java HashSet <String> contiene le stringhe o l'identità dell'oggetto?
HashSet<String> wordSet = new HashSet<String>();
String a = "hello";
String b = "hello";
wordSet.add(a);
Would wordSet.contains(b);
ritorno true
o false
? Da quello che ho capito, a
e b
si riferiscono a oggetti diversi anche se i loro valori sono gli stessi. Quindi dovrebbe restituire false
. Tuttavia, quando eseguo questo codice, restituisce true
. Restituisce sempre true
indipendentemente da dove l'oggetto stringa b
provenga finchè b
contiene il valore "hello"
? Sono sempre garantito questo? Se no, quando non sono garantito questo? E se volessi fare qualcosa di simile con oggetti diversi dalle stringhe?
... ed è per questo che lui/lei ha detto 'Sarà tornare sempre vero, non importa dove String oggetto b è venuta da fintanto che B contiene il valore 'ciao'?' –
'Da quanto ho capito, a e b si riferiscono a oggetti diversi anche se i loro valori sono gli stessi. - Sono abbastanza sicuro che non è quello che pensava. – Perception
Sì, mi dispiace, hai ragione. In ogni caso, la domanda che gli veniva posta era se gli HashSet usassero l'uguaglianza o l'identità; è solo il suo esempio che è un tantino imperfetto. –