Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [java] quale struttura dati ?

    Salve a tutti,
    avrei la necessità di implementare un elenco di oggetti "complessi" (ossia ogni oggetto è composto da vari campi, come potrebbe essere ad esempio un'anagrafica).

    Dato che i dati sono DAVVERO tanti, avevo pensato di utilizzare come struttura dati un'HashMap (che permette una ricerca per chiave in tempo costante O(1) ). Un po come avviene nei DB credo...

    Il problema è che dovrei effettuare accessi/ricerche anche per altri campi (diciamo non in chiave) e a questo punto non so se la struttura che ho scelto è quella ottimale.

    Di utilizzare un ArrayList o LinkedList non ci penso nemmeno. Strutture ad albero non saprei...

    E poi in un'HashMap non c'è il concetto di ordinamento, o sbaglio? Ogni volta che estraggo i dati devo passare dalla classe Collections che me li sorta...

    Credo di aver bisogno di un consiglio illuminante...

    Grazie 1000 !!!

  2. #2
    nessuno mi aiuta ??

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    La prima cosa che mi viene in mente è: perchè non utilizzare un database? Hai la possibilità di gestire i tuoi dati come vuoi, senza perderti in dettagli di implementazione ed efficienza (che non sono mai semplici da gestire).

    Se proprio non puoi utilizzare un DB devi fare alcune considerazioni: è necessario l'ordinamento? di cosa hai più bisogno: operazioni di inserimento/estrazione, o ricerche per consultazione?
    A seconda di queste risposte cambia la struttura dati da utilizzare, tenendo sempre presente che nella maggior parte dei casi si riesce ad ottimizzare un solo parametro, non tutti.
    Ciao,
    Lorenzo

  4. #4
    Originariamente inviato da lelefante
    Se proprio non puoi utilizzare un DB devi fare alcune considerazioni: è necessario l'ordinamento? di cosa hai più bisogno: operazioni di inserimento/estrazione, o ricerche per consultazione?
    A seconda di queste risposte cambia la struttura dati da utilizzare, tenendo sempre presente che nella maggior parte dei casi si riesce ad ottimizzare un solo parametro, non tutti.
    Infatti non posso utilizzare un DB ... la mia struttura dati è composta da un campo "chiave" e di n altri campi.

    Posso fare operazioni di insert/modify/delete ( e fin qui nessun problema) ma anche operazioni di ricerca per svariati campi (qui ho qualche problema di performance).
    Infatti avevo inizialmente scelto un HashMap, ma per ricerche generiche mi devo passare tutta la struttura dati OGNI SANTA VOLTA !!!

    Avevo pensato successivamente di tenermi i dati in una struttura ordinati per chiave e delle tabelle "con altri campi chiave" contenenti riferimanti alla stuttura dati.
    In base alla richiesta, effettuo la ricerca sulla struttura con l'ordinamento più opportuno.
    Questo ottimizza la ricerca ma rallenta (di poco, spero, le operazioni di inserimento, modifica e cancellazione).

    Secondo voi sto delirando? :master:
    Grazie, Manuel

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    315
    Originariamente inviato da manuel_b

    Avevo pensato successivamente di tenermi i dati in una struttura ordinati per chiave e delle tabelle "con altri campi chiave" contenenti riferimanti alla stuttura dati.
    In base alla richiesta, effettuo la ricerca sulla struttura con l'ordinamento più opportuno.
    Questo ottimizza la ricerca ma rallenta (di poco, spero, le operazioni di inserimento, modifica e cancellazione).
    Mi sembra un buon compromesso...tutto dipende ovviamente da quanti tipi di chiave puoi/vuoi utilizzare, oltre a quella primaria.
    Ogni tipo diverso di ricerca necessita, ovviamente, della propria struttura dati: con diversi alberi bilanciati (uno per chiave) puoi ottenere ottime prestazioni per quanto riguarda le ricerche, ma ovviamente paghi il prezzo dell'aggiornamento di tutti gli alberi per ogni operazione di inserimento/cancellazione (e anche modifica, se vai a toccare almeno una delle chiavi di ricerca).

    Come risposta, si avvicina al tuo problema?
    Ciao,
    Lorenzo

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.