Properties, HshMap e HashTable, tutti e 3 salvano dati chiave-valore, perche' diversi modi per fare una cosa uguale??
So che Properties e' persistente, quindi consente la serializzazione, ma HashTable e HashMap??
Chiarimenti please![]()
Properties, HshMap e HashTable, tutti e 3 salvano dati chiave-valore, perche' diversi modi per fare una cosa uguale??
So che Properties e' persistente, quindi consente la serializzazione, ma HashTable e HashMap??
Chiarimenti please![]()
Nulla, ma e' sempre qualcosa.
In Java ci sono numerose classi che gestiscono le mappe.
Ecco la gerarchia:
AbstractMap - implementa parte di map
HashMap - aggiunge la tabella di hash
TreeMap - utilizza una struttura ad albero
WeakHashMap - usa una tabella hash con chiavi deboli
LinkedHashMap - consente iterazioni in ordine di inserimento
IdentityHashMap - eguaglia i riferimenti
Prendiamo quella indicata da te: HashMap che è una tabella che associa ad un riferimento una chiave.
Poi hai parlato di Hashtable, prima essa era un'implementazione concreta di Dictionary. Da Java 2 in poi è stata riprogettata utilizzando Map come le classi di prima, però Hashtable è sincronizzata.
Infine Properties, Properties è una sottodlasse di Hashtable e utilizza come chiave e come valore STRINGHE(le altre classi oggetti).
Properties è molto usata anche da altri metodi e classi della core standard di Java, per fare un esempio System.getProperties ritorna un Properties con le variabili d'ambiente del sistema.
![]()
Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)
OK tutte pero' ti consentono di salvare i dati con una chiave, ma qual'e' la migliore?? poi ho letto argomenti riguardo i Generics che migliorano le classi Collection.
Cosa usare??
Un altro consiglio, cosa devo studiare per le applicazioni lato server? ho studiato i socket con i canali Channel e il multicasting, mi sapresti indirizzare per reperire gli argomenti??
Cmq saro' monotono ma sei una mente!!
ciao![]()
Nulla, ma e' sempre qualcosa.
grazieOriginariamente inviato da maurizio2
OK tutte pero' ti consentono di salvare i dati con una chiave, ma qual'e' la migliore?? poi ho letto argomenti riguardo i Generics che migliorano le classi Collection.
Cosa usare??
Un altro consiglio, cosa devo studiare per le applicazioni lato server? ho studiato i socket con i canali Channel e il multicasting, mi sapresti indirizzare per reperire gli argomenti??
Cmq saro' monotono ma sei una mente!!
ciao![]()
![]()
Per la migliore dipende dal tipo di dati devi gestire, forse la più comune è Hashtable, che è una sorta di HasMap ma appunto sincronizzata; quindi fra HasMap e Hastable userei la seconda, prima di Java2 c'era il problema che non avevano interfaccia in comune, quindi se usai una un metodo doveva richiedere come parametri, per il polimorfismo, classi di livello molto astratto per acettare entrambe; adesso che entrabe usano Map sono più "compatibili".
Il discorso è diverso per Properties, un esempio tipico per Properties è salvare "configurazioni", tipo per la GUI salvi colore=codice_colore, aspetto=path_classe_look ed è tutto immediato(salvare e caricare), per quando riguarda HastQualcosa devi serializzare o fare altri giri per raggiungere uno scopo che Properties facilita, però Properties accetta solo String... quindi ogni classe ha un pro e una pecca.
Adesso con i gerenics viene implementato il polimorfismo parametrico quindi ogni classe avrà un punto di forza in più per implementare questo paradigma della OOP.
Per il lato server si usano le classi di java.net.* come ServerSocket(ascolta una porta) Socket(si connette ad una porta di un host), URL che rappresenta una url appunto e moltissime altre; poi puoi usare per mandare i dati gli stream con java.io o i canali(che non ho mai usato) di java.nio.
Se poi intendi lato server "web-service" dovresti usare le servlet o le jsp che sono come php, vengono eseguite alla richiesta post o get della pagina; la SUn fornisce un kit di sviluppo per questo applicazioni: J2EE, ovvero l'enterprise edition.
![]()
Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)
Ok adesso il discorso e' chiaro, riguardo le classi che hai elencato per le connessioni le ho gia' studiate, cmq ti consiglio di studiare i canali e i selettori per realizzare un server monothread per accettare connessioni multiple dai client, se ti va ti posso fornire i sorgenti di un client e un server che utilizzano questa tecnologia, se vuoi ancora ho realizzato un piccolo esempio riguardo i canali utilizzati per i file, sui testi che ho studiato(sia C, Java o C++) ogni argomento riguardo ai file sia casuali che sequenziali utilizzano un programma di supporto per realizzare un file che abbia i record gia' impostati e di numero predefinito, con i canali invece hai un file vuoto dove puoi aggiungere nuovi record di dimensione fissa e la possibilita' di aggiungerne altri senza implementare algoritmi che riscrivono l'intero file.
Ma a proposito hai dato un occhiata al simulatore e al compilatore scritto in C?
Ti e' servito a capire nuovi aragmenti?
Ciao![]()
Nulla, ma e' sempre qualcosa.
si grazie, se hai qualche esempio coi canali manda pureOriginariamente inviato da maurizio2
Ok adesso il discorso e' chiaro, riguardo le classi che hai elencato per le connessioni le ho gia' studiate, cmq ti consiglio di studiare i canali e i selettori per realizzare un server monothread per accettare connessioni multiple dai client, se ti va ti posso fornire i sorgenti di un client e un server che utilizzano questa tecnologia, se vuoi ancora ho realizzato un piccolo esempio riguardo i canali utilizzati per i file, sui testi che ho studiato(sia C, Java o C++) ogni argomento riguardo ai file sia casuali che sequenziali utilizzano un programma di supporto per realizzare un file che abbia i record gia' impostati e di numero predefinito, con i canali invece hai un file vuoto dove puoi aggiungere nuovi record di dimensione fissa e la possibilita' di aggiungerne altri senza implementare algoritmi che riscrivono l'intero file.
Ma a proposito hai dato un occhiata al simulatore e al compilatore scritto in C?
Ti e' servito a capire nuovi aragmenti?
Ciao![]()
Per il simulatore C l'interprete è chiaro, il compilatore è algoritmicamente più avanzato e cercherò di capirlo bene più avanti.
![]()
Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)
Il problema e' il tuo server di posta, l'ultima volta per spedirti i sorgenti C e' stato un casino, non accetta mail di un certo peso.Ci porvo...
Nulla, ma e' sempre qualcosa.
è la gmail, la posta di google è in beta testing, avranno fatto qualche manutenzione.Originariamente inviato da maurizio2
Il problema e' il tuo server di posta, l'ultima volta per spedirti i sorgenti C e' stato un casino, non accetta mail di un certo peso.Ci porvo...
![]()
Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)