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

    Ricerca chiavi su HashTable con espressioni regolari

    Ciao a tutti!!!
    ho una HashTable che ha come chiavi delle stringhe e vorrei eseguire delle ricerche restituendo tutti i valori che hanno un match con una espressione regolare su tutte le chiavi... come potrei fare?

    Devo necessariamente scorrere tutte le chiavi e guardarle una per una? Non posso in un qualche modo adattare la ricerca alla funzione della HashTable containsKey ?
    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: Ricerca chiavi su HashTable con espressioni regolari

    Originariamente inviato da Poker1
    ho una HashTable che ha come chiavi delle stringhe e vorrei eseguire delle ricerche restituendo tutti i valori che hanno un match con una espressione regolare su tutte le chiavi... come potrei fare?

    Devo necessariamente scorrere tutte le chiavi e guardarle una per una? Non posso in un qualche modo adattare la ricerca alla funzione della HashTable containsKey ?
    Sì, direi che l'unica è fare una iterazione sulle chiavi e per ognuna verificare se fa il match con la regex. E comunque ti consiglio di precompilare con Pattern la regex. Cioè non fare str.matches(blabla) perché la compila ogni volta!

    Tieni sempre presente come è fatta una mappa come HashMap o Hashtable (non TreeMap perché come dice il nome, è un albero).
    Viene usata internamente una "hash-table" composta da una lista di N "bucket". Data una chiave, viene calcolato l'hash e tramite una apposita funzione, questo hash si traduce in un indice nella lista dei bucket.
    Sotto il bucket c'è una lista linkata di entry formate da chiave+valore e viene scansionata cercando la chiave con equals(). Una volta trovata la chiave, si ottiene subito il valore.
    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
    Ma quindi se io vado a fare una scansione di tutte le chiavi ho una complessita O(n) e quindi per questo tipo di ricerca ( con espressione regolare ) perdo la complessita' O(c) che ha la hashmap giusto? e' come cercare in un array "normale".
    Non riscrivere la ruota, usa le librerie.
    by Bjarne Stroustrup
    EIDON SOFT MEMBER

  4. #4
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Originariamente inviato da Poker1
    Ma quindi se io vado a fare una scansione di tutte le chiavi ho una complessita O(n)
    Sorry per il ritardo (mi ero dimenticato). Nelle Map basate su una hash-table, la complessità della iterazione è O(h/n), dove 'h' è la capacità della hash-table (il numero di "bucket", non il numero di entry).
    Andrea, andbin.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

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.