Torna indietro   Hardware Upgrade Forum > Software > Programmazione

HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione
HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione
Abbiamo provato per diverse settimane il nuovo Magic V5 di HONOR, uno smartphone pieghevole che ci ha davvero stupito. Il device è il più sottile (solo 4.1mm) ma non gli manca praticamente nulla. Potenza garantita dallo Snapdragon 8 Elite, fotocamere di ottima qualità e batteria in silicio-carbonio che garantisce un'ottima autonomia. E il Prezzo? Vi diciamo tutto nella nostra recensione completa.
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro)
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro)
Google Pixel 10 Pro XL è il top di gamma della serie Pixel, presentando un ampio display Super Actua da 6.8 pollici insieme alle novità della serie, fra cui la ricarica wireless magnetica Pixelsnap e le nuove funzionalità AI avanzate. Il comparto fotografico include un sistema a tripla fotocamera con zoom Pro Res fino a 100x, mentre il processore Tensor G5 con 16GB di RAM garantisce prestazioni percepite molto elevate su Android.
Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico
Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico
Forte della piattaforma Qualcomm Snapdragon X, il notebook Lenovo IdeaPad Slim 3 riesce a coniugare caratteristiche tecniche interessanti ad uno chassis robusto, con autonomia di funzionamento a batteria che va ben oltre la tipica giornata di lavoro. Un notebook dal costo accessibile pensato per l'utilizzo domestico o in ufficio, soprattutto con applicazioni native per architettura ARM
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 20-11-2003, 18:06   #1
Burlindo
Senior Member
 
L'Avatar di Burlindo
 
Iscritto dal: Oct 2002
Città: Rovigo
Messaggi: 343
[java] ordinamento di hashMap

Devo fare un database in java, e devo ordinare i cd e i vhs x titolo (e/o per autore). Come posso fare? Nelle slides del prof. ci sono dei metodi che non esistono!:wft:
Vi riporto il codice:

(modificato)
__________________
Cuore sportivo
IN OLANDA E' LEGALE!!!!
"...sempre onti anca cola patente a ponti"

Ultima modifica di Burlindo : 24-11-2003 alle 09:48.
Burlindo è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2003, 00:39   #2
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
E' stato il tuo professore a dirti di usare degli oggetti HashMap per il database?

La risposta alla domanda ci dirà chi è stato a "fregarti".

Gli HashMap supportano un ordinamento dei dati in base alle chiavi. Il che vuol dire che anche con tutta la buona volontà non puoi ordinarne il contenuto in base ai valori.

Se devi mantenere gli oggetti "HashMap" allora puoi fare una "query" sull'oggetto "Collection" a cui accedi con il metodo "values()" di HashMap, crei poi una lista (List) di riferimenti e usi il metodo sort(List, Comparator) della classe Collections per ordinare i valori. L'ordinamento realizzato non modifica l'ordine dell'hash-map. Al solito, in Java è più facile a farsi che a dirsi, saranno si e no 10 righe di codice.

Secondo me le strade alternative comportano l'abbandono degli oggetti HashMap per dei List, ma sono pronto ad ascoltare pareri alternativi.

&Ciao.
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2003, 16:41   #3
Burlindo
Senior Member
 
L'Avatar di Burlindo
 
Iscritto dal: Oct 2002
Città: Rovigo
Messaggi: 343
Quote:
Originariamente inviato da PGI
E' stato il tuo professore a dirti di usare degli oggetti HashMap per il database?
Si, però mi sono reso conto che mi sono spiegato male. Non devo ordinare la struttura di un' hashmap, ma solamente la stampa a schermo (a riga di comando e non ad applet).


Quote:
Gli HashMap supportano un ordinamento dei dati in base alle chiavi. Il che vuol dire che anche con tutta la buona volontà non puoi ordinarne il contenuto in base ai valori.
Giusto.

Quote:
Se devi mantenere gli oggetti "HashMap" allora puoi fare una "query" sull'oggetto "Collection" a cui accedi con il metodo "values()" di HashMap, crei poi una lista (List) di riferimenti e usi il metodo sort(List, Comparator) della classe Collections per ordinare i valori. L'ordinamento realizzato non modifica l'ordine dell'hash-map. Al solito, in Java è più facile a farsi che a dirsi, saranno si e no 10 righe di codice.

Secondo me le strade alternative comportano l'abbandono degli oggetti HashMap per dei List, ma sono pronto ad ascoltare pareri alternativi.

&Ciao.
Proverò con questa soluzione. Il problema di fondo come avrai sicuramente capito è che non conosco bene java e sicuramente come lo spiega il prof. non lo imparerò mai. Ho qualche libro ma mi servirebbe qualcosa di incentrato più sulla pratica, con esempi a iosa. Potresti darmi qualche suggerimento in questo senso?


Ti ringrazio per il tuo interessameto, molto utile in questi momenti di sconforto .
__________________
Cuore sportivo
IN OLANDA E' LEGALE!!!!
"...sempre onti anca cola patente a ponti"
Burlindo è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2003, 19:27   #4
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
A volte un po' di codice è meglio delle parole.

Codice:
import java.util.*;
/**
 *
 * @author
 */
public class MainClass {  
  public MainClass() {    
    HashMap database=new HashMap();
    database.put(new Integer(1), new Persona("Gianni", "Verdi"));
    database.put(new Integer(2), new Persona("Pippo", "Neri"));
    database.put(new Integer(3), new Persona("Marco", "Bianchi"));
    database.put(new Integer(4), new Persona("Aldo", "Neri"));
        
    Comparator customCompare=new Comparator() {
      public int compare(Object o1, Object o2) {
        Persona p1=(Persona)o1;
        Persona p2=(Persona)o2;
        int value=p1.cognome.compareTo(p2.cognome);
        return value==0 ? p1.nome.compareTo(p2.nome) : value;
      }      
    };
    
    printSortedDatabase(database, customCompare);    
  }
  
  public void printSortedDatabase(HashMap map, Comparator sorteOp) {
    ArrayList list=new ArrayList(map.values());
    Collections.sort(list, sorteOp);
    Iterator iterator=list.iterator();
    while(iterator.hasNext()) {
      System.out.println(iterator.next());
    }
  }
    
  class Persona {
    String nome=null, cognome=null;
    
    Persona(String nome, String cognome) {
      this.nome=nome;
      this.cognome=cognome;
    }
    
    public String toString() {
      return nome+" "+cognome;
    }
  }
  
  public static void main(String[] a) {    
    new MainClass();
  }
}
Nell'applicazione su riportata probabilmente noterai cose familiari.

La classe annidata "Persona" serve come esempio minimo di un oggetto da infilare nel database. Possiede due campi String, nome e cognome, è una situazione simile a quella che hai nel database (solo un po' più ridotta).

Le due parti che ci interessano sono la definizione del nostro "Comparator" e il metodo "printSortedDatabase"

L'ordinamento sfrutta il metodo sort(List, Comparator) della classe Collections.

List è la lista che contiene i valori da ordinare, Comparator è un oggetto che implementi l'interfaccia omonima.

L'interfaccia Comparator ha un metodo, compare(Object oggetto1, Object oggetto2) che restituisce un intero.

L'intero restituito dal metodo "compare" è usato dall'algoritmo di ordinamento contenuto nel metodo "sort" per ordinare gli oggetti nella lista. Il valore può essere "-1", "0", "1", dove -1 sta per intero negativo e 1 per intero positivo.

I tre numeri rappresentano il risultato del confronto tra i due oggetti nell'ordine di argomento: ad esempio, se oggetto1 è "minore" di oggetto2 dovrebbe restituire un valore negativo.

La prima operazione che scegliamo per il metodo "compare" è un casting dei due oggetti-parametro in due variabili di tipo "Persona" (cosa che si adatta alla minimalità dell'esempio, già sappiamo che il nostro database conterrà solo oggetti Persona).

Poi eseguiamo un confronto tra i campi String "cognome" dei due oggetti Persona.

Nota che String implementa Comparable: la definizione di String del metodo "compareTo" restituisce un intero che rappresenta la posizione "realtiva" della stringa rispetto ad un'altra in ordine alfabetico (ed è quello che ci serve).

String.compareTo(String) restituisce 0 se le due stringhe hanno la stessa "posizione alfabetica" (nell'esempio corrisponde al caso in cui le due persone abbiano lo stesso cognome).
Per semplicità usiamo l'operatore ternario di java per gestire questo caso, che restituisce il valore del confronto tra i campi "Nome".

Il metodo "printSortedDatabase" estrae dall'oggetto HashMap la lista dei valori (restituita come Collection dal metodo "values()").

Per poter ordinare l'oggetto collection lo "infiliamo" in un "List" (in questo caso un ArrayList) che poi passiamo al metodo (statico) "sort" della classe Collection insieme al nostro Comparator.

Il risultato è che il contenuto della lista verrà ordinato alfabeticamente sui campi "cognome" e "nome".

Non è il modo più efficiente immaginabile ma il codice che risulta è estremamente "pulito"
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2003, 21:55   #5
Burlindo
Senior Member
 
L'Avatar di Burlindo
 
Iscritto dal: Oct 2002
Città: Rovigo
Messaggi: 343
Grazie, adesso provo. Non sapresti indicarmi qualche libro di testo dove sono riportati esempi di algoritmi?? ...Credo che mi serva una buona base per poter migliorare.
__________________
Cuore sportivo
IN OLANDA E' LEGALE!!!!
"...sempre onti anca cola patente a ponti"
Burlindo è offline   Rispondi citando il messaggio o parte di esso
Old 21-11-2003, 22:05   #6
PGI
Bannato
 
L'Avatar di PGI
 
Iscritto dal: Nov 2001
Città: Verona
Messaggi: 1086
Esempi di algoritmi, no. Se cerchi degli algoritmi di ordinamento Internet e Google sono in genere degli ottimi strumenti, cercando un po' si trovano cose straordinarie.

Di codice Java ne trovi parecchio in rete, di scritto personalmente adoro quei libroni della Apogeo che costano uno sproposito, dicono poco o nulla, ma hanno almeno una riga di codice per ogni classe("Java2 tutto ed oltre" (rosso), "Java2 SDK 1.4" ad esempio).
PGI è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2007, 17:33   #7
BigBug
Senior Member
 
L'Avatar di BigBug
 
Iscritto dal: Jul 2004
Messaggi: 853
e se volessi semplicemente scorrere e stampare a video il contenuto di una HashMap tipo questa:
Codice PHP:
...
HashMap database=new HashMap();
database.put("p1", new Persona("Gianni""Verdi"));
database.put("p2", new Persona("Pippo""Neri"));
database.put("p3", new Persona("Marco""Bianchi"));
database.put("p4", new Persona("Aldo""Neri"));
...
class 
Persona {...
Persona(String nomeString cognome) {
      
this.nome=nome;
      
this.cognome=cognome;
}}
... 
ad esempio solo le persone di cognome Neri.

non riesco a saltarci fuori...
__________________
Disclaimer: "Si prega i gentili lettori di attenersi alle sole parole presenti nel messaggio nel tentativo di comprendere il pensiero dell'autore.Siete calorosamente invitati ad evitare letture della mente,voli pindarici o presunte letture tra le righe nel tentativo vano di capire quale potrebbe essere l'opinione dell'autore riguardo ad argomenti non trattati da esso. Si prega inoltre,sebbene dovrebbe essere pratica standard,di leggere con attenzione tutte le parole utilizzate. Grazie."
BigBug è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2007, 18:04   #8
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
o mmmio ddio....hai uppato una discussione del "vecchio" pgi

ora arriva pgi-bis e ti risponde, io la momento sono troppo impegnato a strapazzarmi dalle risate


comunque per scorrerla solitosistema con iteratore, per stampare solo quelli che ti interessano fai un equals sul "cognome" e fai stamapre solo quelli che rispettano l'equals.

sò,che come al solito, sono stato CHIARISSIMO, ma al momento purtropppo non posso concederti altro tempo.

scusami.
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2007, 19:03   #9
BigBug
Senior Member
 
L'Avatar di BigBug
 
Iscritto dal: Jul 2004
Messaggi: 853
Quote:
Originariamente inviato da franksisca Guarda i messaggi
o mmmio ddio....hai uppato una discussione del "vecchio" pgi

ora arriva pgi-bis e ti risponde, io la momento sono troppo impegnato a strapazzarmi dalle risate
Perchè? cosa gli è capitato..??


Quote:
Originariamente inviato da franksisca Guarda i messaggi
comunque per scorrerla solitosistema con iteratore, per stampare solo quelli che ti interessano fai un equals sul "cognome" e fai stamapre solo quelli che rispettano l'equals.

sò,che come al solito, sono stato CHIARISSIMO, ma al momento purtropppo non posso concederti altro tempo.

scusami.
grazie!
provo a riguardare meglio questo Iterator.
__________________
Disclaimer: "Si prega i gentili lettori di attenersi alle sole parole presenti nel messaggio nel tentativo di comprendere il pensiero dell'autore.Siete calorosamente invitati ad evitare letture della mente,voli pindarici o presunte letture tra le righe nel tentativo vano di capire quale potrebbe essere l'opinione dell'autore riguardo ad argomenti non trattati da esso. Si prega inoltre,sebbene dovrebbe essere pratica standard,di leggere con attenzione tutte le parole utilizzate. Grazie."
BigBug è offline   Rispondi citando il messaggio o parte di esso
Old 22-10-2007, 19:23   #10
franksisca
Senior Member
 
L'Avatar di franksisca
 
Iscritto dal: May 2005
Città: Roma
Messaggi: 7938
praticamente, non sò perchè, ma l'account di pgi è stato bannato (come pouoi vedere da sotto il suo nick), e si dice (leggenda metropolitana....verità...solo lui sà ) che pgi-bis sia la sua reincarnazione


l'ho scoperto in periodo di tesi
__________________
My gaming placement
franksisca è offline   Rispondi citando il messaggio o parte di esso
Old 23-10-2007, 16:11   #11
71104
Bannato
 
L'Avatar di 71104
 
Iscritto dal: Feb 2005
Città: Roma
Messaggi: 7029
cercando gli altri messaggi di PGI-Bis ho anche scoperto perché è stato bannato: ha chiesto lui stesso, con un sobrio messaggio di addio con tanto di firma, di essere rimosso dal forum :|
e ha fatto ciò perché a2000 l'aveva offeso
purtroppo a2000 era una versione vecchia e buggata, adesso per fortuna l'hanno patchata ed è uscita la a2000.1, quindi queste cose non dovrebbero più succedere

PS: dalla letterina d'addio di PGI-Bis ho scoperto che il suo vero nome è Pierluigi
71104 è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2007, 10:07   #12
BigBug
Senior Member
 
L'Avatar di BigBug
 
Iscritto dal: Jul 2004
Messaggi: 853
Quote:
Originariamente inviato da franksisca Guarda i messaggi
comunque per scorrerla solitosistema con iteratore, per stampare solo quelli che ti interessano fai un equals sul "cognome" e fai stamapre solo quelli che rispettano l'equals.
non ci riesco... qualcuno puo darmi una mano...?
__________________
Disclaimer: "Si prega i gentili lettori di attenersi alle sole parole presenti nel messaggio nel tentativo di comprendere il pensiero dell'autore.Siete calorosamente invitati ad evitare letture della mente,voli pindarici o presunte letture tra le righe nel tentativo vano di capire quale potrebbe essere l'opinione dell'autore riguardo ad argomenti non trattati da esso. Si prega inoltre,sebbene dovrebbe essere pratica standard,di leggere con attenzione tutte le parole utilizzate. Grazie."
BigBug è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2007, 10:28   #13
andbin
Senior Member
 
L'Avatar di andbin
 
Iscritto dal: Nov 2005
Città: TO
Messaggi: 5206
Supponendo che Persona abbia un metodo getCognome(), si può fare (esempio):

Codice:
Map<String,Persona> map = new HashMap<String,Persona> ();

map.put ("p1", new Persona ("Gianni", "Verdi"));
map.put ("p2", new Persona ("Pippo", "Neri"));
map.put ("p3", new Persona ("Marco", "Bianchi"));
map.put ("p4", new Persona ("Aldo", "Neri"));

for (Persona p : map.values ())
{
    if (p.getCognome ().equals ("Neri"))
        System.out.println ("trovato");
}
__________________
Andrea, SCJP 5 (91%) - SCWCD 5 (94%)
andbin è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2007, 11:02   #14
BigBug
Senior Member
 
L'Avatar di BigBug
 
Iscritto dal: Jul 2004
Messaggi: 853
Grazie mille andbin!! , adesso funziona a dovere.

...ti chiedo brevemente 2 cose:

1) Come si legge questa riga di codice?
Codice:
for (Persona p : map.values ())
2) Non ho mai visto questa sintassi, quando viene usata?
Codice:
Map<String,Persona> map = new HashMap<String,Persona> ();
Grazie ancora.
__________________
Disclaimer: "Si prega i gentili lettori di attenersi alle sole parole presenti nel messaggio nel tentativo di comprendere il pensiero dell'autore.Siete calorosamente invitati ad evitare letture della mente,voli pindarici o presunte letture tra le righe nel tentativo vano di capire quale potrebbe essere l'opinione dell'autore riguardo ad argomenti non trattati da esso. Si prega inoltre,sebbene dovrebbe essere pratica standard,di leggere con attenzione tutte le parole utilizzate. Grazie."
BigBug è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2007, 11:14   #15
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
Quote:
Originariamente inviato da BigBug Guarda i messaggi
Grazie mille andbin!! , adesso funziona a dovere.

...ti chiedo brevemente 2 cose:

1) Come si legge questa riga di codice?
Codice:
for (Persona p : map.values ())
2) Non ho mai visto questa sintassi, quando viene usata?
Codice:
Map<String,Persona> map = new HashMap<String,Persona> ();
Grazie ancora.
Sono state introdotte da Java 5.
La prima è un semplice ciclo for each, in pratica si legge così:
per ogni Persona p appartenente alla collection restituita da map.values() esegui.....

La seconda è l'uso dei generics, un sistema studiato per effettuare un controllo a livello di compilazione sul tipo di dati inserito in una collection.
In pratica stai dicendo che la chiave della mappa è una stringa e il valore memorizzato è un oggetto di tipo persona.
In questo modo non è + necessario effettuare il cast quando estrarrai un oggetto dalla mappa.
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 24-10-2007, 11:30   #16
BigBug
Senior Member
 
L'Avatar di BigBug
 
Iscritto dal: Jul 2004
Messaggi: 853
ho capito...

Grazie a tutti! Gentilissimi
__________________
Disclaimer: "Si prega i gentili lettori di attenersi alle sole parole presenti nel messaggio nel tentativo di comprendere il pensiero dell'autore.Siete calorosamente invitati ad evitare letture della mente,voli pindarici o presunte letture tra le righe nel tentativo vano di capire quale potrebbe essere l'opinione dell'autore riguardo ad argomenti non trattati da esso. Si prega inoltre,sebbene dovrebbe essere pratica standard,di leggere con attenzione tutte le parole utilizzate. Grazie."
BigBug è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


HONOR Magic V5: il pieghevole ultra sottile e completo! La recensione HONOR Magic V5: il pieghevole ultra sottile e co...
Recensione Google Pixel 10 Pro XL: uno zoom 100x assurdo sempre in tasca (e molto altro) Recensione Google Pixel 10 Pro XL: uno zoom 100x...
Lenovo IdeaPad Slim 3: un notebook Snapdragon X economico Lenovo IdeaPad Slim 3: un notebook Snapdragon X ...
Recensione OnePlus Watch 3 43mm: lo smartwatch che mancava per i polsi più piccoli Recensione OnePlus Watch 3 43mm: lo smartwatch c...
BOOX Note Air4 C è uno spettacolo: il tablet E Ink con Android per lettura e scrittura BOOX Note Air4 C è uno spettacolo: il tab...
Anche a Pescara si passa ai fatti: e-bik...
La One UI 8 è pronta: Samsung con...
Xiaomi annuncia l'arrivo in Italia dei R...
La Cina stupisce ancora: test per la tur...
L'iconico iMac G3 diventerà un set LEGO?...
Microsoft: nessun legame tra update di a...
Rivoluzione in arrivo per Threads: il so...
Battlefield 6: molti utenti hanno giocat...
Acronis sfrutterà le NPU delle CP...
ChatGPT, le chat possono essere segnalat...
Xiaomi lancia HyperOS 3 basato su Androi...
Tesla lancia la Model Y Performance: nuo...
HPE aggiunge nuove funzionalità d...
Socket AM5 a rischio? ASRock prova a spe...
UE pronta a cancellare dazi sui prodotti...
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: 20:09.


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