Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di Poker1
    Registrato dal
    Jul 2002
    Messaggi
    479

    Struttura dati con una chiave per piu valori

    Ciao a tutti!!!
    mi servirebbe una struttura dati che possa memorizzare per una chiave piu valori.
    Praticamente devo associare un insieme di parole chiave ad un file e una parola chiave puo riferirsi a piu file.

    Esempio:
    chiave: video valori: file1.avi file2.avi
    chiave: audio valori: file3.mp3 file4.mp3

    Java offre strutture dati di questo tipo?

    Nel caso non ci fosse avevo pensato di fare un vettore di parole chiavi e un vettore di vettori per memorizzare i riferimenti ai file in modo che nell'i-esima posizione del vettore delle parole chiavi ci sia la chiave che riferisce i file nella stessa posizione dell'altra struttura...non so se mi sono spiegato...

    Farla cosi' andrebbe solo che il tempo di ricerca di una chiave sarebbe lineare e non mi convince un gran che... avete qualche consiglio? :-)
    Non riscrivere la ruota, usa le librerie.
    by Bjarne Stroustrup
    EIDON SOFT MEMBER

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284

    Re: Struttura dati con una chiave per piu valori

    Originariamente inviato da Poker1
    mi servirebbe una struttura dati che possa memorizzare per una chiave piu valori.
    Praticamente devo associare un insieme di parole chiave ad un file e una parola chiave puo riferirsi a piu file.

    Esempio:
    chiave: video valori: file1.avi file2.avi
    chiave: audio valori: file3.mp3 file4.mp3
    L'esempio appena fatto è che 1 parola fa da chiave per più file. Ma tu sopra dici "associare un insieme di parole chiave ad un file", quindi per un file vuoi poter avere più parole chiave? Es. file1.avi -> "video" "pippo" "pluto" ???

    E poi come vuoi fare le ricerche? Solo da una parola ottenere i file? O anche da un file ottenere la/e parola/e???

    È questo che bisognerebbe prima stabilire bene.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Utente di HTML.it L'avatar di Poker1
    Registrato dal
    Jul 2002
    Messaggi
    479
    Prima ho scritto un po' di fretta e mi sono incasinato.
    Allora, io voglio associare piu parole chiave ad un file ed avere la possibilita' che una parola chiave si possa riferire a file diversi.

    Se non ho capito male con l'HashMap posso fare la prima parte, ovvero avere piu parole chiave (diverse) che si riferiscono ad un valore; ma questa non ha la funzionalita' che una di queste parole chiave possa riferirsi a piu valori, cioe' nell'HashMap le chiavi devono essere tutte diverse.

    Poi la ricerca puo' essere effettuata SOLO sulle chiavi, cioe' tu mi dai una chiave ( o un insieme di chiavi ) e io ti do la lista di tutti i file che queste riferiscono.

    Se non erro in C++ questa struttura dati si chiama MultiMap.

    Spero di nn essermi incasinato ancora una volta, sono discorsi un po' contorti :-)
    Non riscrivere la ruota, usa le librerie.
    by Bjarne Stroustrup
    EIDON SOFT MEMBER

  4. #4
    Utente di HTML.it L'avatar di Poker1
    Registrato dal
    Jul 2002
    Messaggi
    479
    Esempio:

    Chiave: video Valore: pippo1.avi topolino1.avi
    Chiave: topolino Valore: topolino1.avi
    Chiave: pippo Valore: pippo.avi

    quindi l'associazione sarebbe cosi':

    Chiave: video topolino Valore: topolino
    Chiave: video pippo Valore: pippo

    Solo che dovendo fare le ricerche anche con parole singole se mi tengo una chiave composta cosi' diventa un po' macchinoso ad esempio cercare la parola video e restituire pippo1.avi e topolino1.avi
    Non riscrivere la ruota, usa le librerie.
    by Bjarne Stroustrup
    EIDON SOFT MEMBER

  5. #5
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Poker1
    Se non ho capito male con l'HashMap posso fare la prima parte, ovvero avere piu parole chiave (diverse) che si riferiscono ad un valore; ma questa non ha la funzionalita' che una di queste parole chiave possa riferirsi a piu valori, cioe' nell'HashMap le chiavi devono essere tutte diverse.
    Già ma nelle Map, K e V possono essere qualunque tipo di oggetto. Quindi potresti mettere come key un String (la parola) e come value un ArrayList<String> (lista di String con i nomi dei file).

    Da quanto dici, la ricerca la fai solo partendo da una parola chiave, quindi tramite questa chiave, ottieni l'array list dei file. Se, per dire, oltre a ciò partendo da un file volessi anche conoscere le parole chiave associate, allora dovresti usare 2 Map.
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  6. #6
    Utente di HTML.it L'avatar di Poker1
    Registrato dal
    Jul 2002
    Messaggi
    479
    mmmm intanto allora provo a fare la map con <String, ArrayList<String>> e se poi ho la necessita' di fare anche l'operazione inversa, creo la seconda mappa con il principio opposto, grazie mille :-)
    Non riscrivere la ruota, usa le librerie.
    by Bjarne Stroustrup
    EIDON SOFT MEMBER

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.