PDA

View Full Version : [JAVA] Mi aiutate a capire una cosa sulle Collections Framework per favore?


luxorl
14-04-2005, 10:26
Ciao a tutti.
Sto studiando le Collections, ed ho letto che ci sono 6 interfaccie:
Collection, Set, List, SortedSet, Map e SortedMap.
Ma sono tutte astratte.
Se io voglio crearmi una collezione non posso quindi fare per esempio:

Set s=new Set(); ---- ERRATO

Devo invece scegliere una sua implimentazione per esempio:

Set s=new HashSet(); ---- ESATTO

Giusto fin qui?
volevo chiedervi se quelle che elenco sono tutte le implementazioni che il JDK ci fornisce:

Set ----> HashSet e TreeSet (Che differenza c'è?)
List ----> LinkedList e ArrayList (Anche qui, chi mi dice due parole sulle differenze?)
Map ----> HashMap e TreeMap

sono tutte?

Il JDK non ci fornisce nessuna implementazione di Collection vero? questa si usa quando c'è bisogno di generalità (però non riesco proprio ad immaginarmi un caso) e in questo caso dovremmo implementarcela da soli... giusto?

Per ultima cosa volevo chiedervi se conoscete o avete qualche esercizio che mi aiuterebbe ad usare tutte le Collections... oppure consigliatemi un metodo, io non so come procedere..

Aspetto le vostre risposte :mano: Grazie

Angus
15-04-2005, 09:56
Ciao a tutti.
Sto studiando le Collections, ed ho letto che ci sono 6 interfaccie:
Collection, Set, List, SortedSet, Map e SortedMap.
Ma sono tutte astratte.
Se io voglio crearmi una collezione non posso quindi fare per esempio:

Set s=new Set(); ---- ERRATO

Devo invece scegliere una sua implimentazione per esempio:

Set s=new HashSet(); ---- ESATTO

Giusto fin qui?
volevo chiedervi se quelle che elenco sono tutte le implementazioni che il JDK ci fornisce:

Set ----> HashSet e TreeSet (Che differenza c'è?)
List ----> LinkedList e ArrayList (Anche qui, chi mi dice due parole sulle differenze?)
Map ----> HashMap e TreeMap

sono tutte?



Personalmente ti consiglio di partire da qualche tutorial se sei alle prime armi con Java, altrimenti le migliori fonti di informazioni a riguardo sono sicuramente:

jdk 1.5 (http://java.sun.com/j2se/1.5.0/docs/api/)
jdk 1.4.2 (http://java.sun.com/j2se/1.4.2/docs/api/)


Il JDK non ci fornisce nessuna implementazione di Collection vero?


falso, tutte le classi che vedi nelle api che ho linkato sono incluse nel JDK, prova a navigare su Collection:

All Known Implementing Classes:
AbstractCollection, AbstractList, AbstractSet, ArrayList, BeanContextServicesSupport, BeanContextSupport, HashSet, LinkedHashSet, LinkedList, TreeSet, Vector


questa si usa quando c'è bisogno di generalità (però non riesco proprio ad immaginarmi un caso) e in questo caso dovremmo implementarcela da soli... giusto?

Il discorso è questo: Collection è un'interfaccia che espone dei metodi di accesso validi per collezioni generiche di oggetti. In un qualsiasi programma utilizzerai implementazioni specifiche di Collection, ma in alcuni casi i pezzi di codice che lavorano sulle collezioni di oggetti funzionano senza sapere effettivamente con quale implementazione specifica hanno a che fare, e quindi vedono gli oggetti attraverso la loro interfaccia generica:

public <E> void printSize(Collection<E> c) {
System.out.pritnln(c.size());
}


Spero di aver capito il senso delle tue domande.
:what:

luxorl
15-04-2005, 10:12
Si, grazie :)

comunque che differenza c'è fra Hash e Tree?
Hash si basa sul codice hash per l'ordinamento? e Tree?


Ho voglia di fare qualche esercizio per cominciare ad utilizzare un po' queste Collections, ma non so proprio che fare... mi sai dare un suggerimento?

Grazie

Angus
15-04-2005, 10:29
Si, grazie :)

comunque che differenza c'è fra Hash e Tree?
Hash si basa sul codice hash per l'ordinamento? e Tree?


Ho voglia di fare qualche esercizio per cominciare ad utilizzare un po' queste Collections, ma non so proprio che fare... mi sai dare un suggerimento?

Grazie

Sono due cose completamente diverse che assolvono a scopi diversi. Gli algoritmi di hashing non servono per ordinare, ma per rendere efficienti gli accessi agli elementi. Tree sta per albero (di ordinamento), e quindi serve proprio per ordinare in maniera efficiente gli elementi, e soprattutto a mantenere l'ordinamento nel tempo. Sono concetti di algoritmi e strutture dati che prescindono dal framework Java.

Strutture dati (http://it.wikipedia.org/wiki/Albero_%28informatica%29)

luxorl
15-04-2005, 10:35
Ok, Grazie.
:)