Tabla hash en LISP

Una tabla hash es un tipo de colección en Common LISP, que se utiliza para asignar claves a valores. Cualquier objeto no nulo se puede utilizar como clave o como valor. Para almacenar y recuperar con éxito objetos de una tabla hash, los objetos utilizados como claves deben implementar el método hashCode y el método equals.  

Tipos de tablas hash en LISP:

Hay tres tipos de tablas hash en lisp, que se enumeran a continuación:

  1. eq : se usa para comparar cuando el hash de la tabla hash se realiza en objetos LISP.
  2. eql:  también se usa para comparar cuando el hash de la tabla hash se realiza en objetos LISP.
  3. equal:  se utiliza para comparar cuando el hash de la tabla hash se realiza en estructuras de árbol LISP.

Creación de una tabla hash en LISP:

La función make-hash-table se usa en Common LISP para crear una tabla hash.

Sintaxis:

make-hash-table &key :test :size :rehash-size : rehash-threshold

Aquí,

  • clave:- Es el nombre de la clave.
  • :test:- Se utiliza para determinar cómo se comparan las claves. Toma uno de los tres tipos de valores de tabla hash mencionados anteriormente (es decir, eq, eql, equal).
  • :size:- Se utiliza para establecer el tamaño inicial de la tabla hash.
  • :rehash-size:- Se utiliza para establecer el incremento en el tamaño de la tabla hash una vez que se llena y es necesario agregar más datos.
  • :rehash-threshold:- Se utiliza para establecer el tamaño máximo de la tabla hash después del cual se puede realizar el incremento a su tamaño.

Agregar y obtener datos de la tabla hash en LISP:

La función gethash se utiliza para obtener datos de una tabla hash en LISP.

Sintaxis:

gethash key hash-table &optional default

Aquí,

  • clave: Es el nombre de la clave.
  • hash-table: Es el nombre de la tabla hash
  • predeterminado: Es el tipo de retorno. Si no se establece, devuelve cero si no se encuentra el valor.

La función setf se usa con la función gethash para agregar datos a una tabla hash en LISP.

Sintaxis:

setf (gethash 'key hash-table-name) '(value)

Aquí,

  • clave: Es el nombre de la clave.
  • hash-table-name: Es el nombre de la tabla hash
  • value: Es el valor a asociar a la clave

Ejemplo: crear una tabla hash, agregar datos y obtener datos de ella.

Lisp

; call make-hash-table function
(setq makeHashTable (make-hash-table)) 
  
; 1st entry
(setf (gethash 'gfg makeHashTable) '(Geeksforgeeks))
  
; 2nd entry
(setf (gethash 'DSA makeHashTable) '(Data Structure & Algorithms)) 
  
; output 1
(write (gethash 'gfg makeHashTable)) 
(terpri)
  
; output 2
(write (gethash 'DSA makeHashTable))

Producción:

(GEEKSFORGEEKS)
(DATA STRUCTURE & ALGORITHMS)

Eliminación de entradas de la tabla hash en LISP:

La función remhash se utiliza para eliminar entradas de clave-valor de una tabla hash.

Sintaxis:

remhash key hash-table

Aquí,

  • clave: Es el nombre de la clave.
  • hash-table: Es el nombre de la tabla hash de donde se van a eliminar las entradas.

Ejemplo: aquí eliminaremos la primera entrada realizada en el ejemplo anterior e imprimiremos el resultado.

Lisp

; call make-hash-table function
(setq makeHashTable (make-hash-table)) 
  
; 1st entry
(setf (gethash 'gfg makeHashTable) '(Geeksforgeeks))
  
; 2nd entry
(setf (gethash 'DSA makeHashTable) '(Data Structure & Algorithms)) 
  
; output 1
(write (gethash 'gfg makeHashTable)) 
(terpri)
  
; output 2
(write (gethash 'DSA makeHashTable))
  
; remove 1st entry
(remhash 'gfg makeHashTable)
(terpri)
  
; output the first entry
(write (gethash 'gfg makeHashTable))

Producción:

(GEEKSFORGEEKS)
(DATA STRUCTURE & ALGORITHMS)
NIL

Publicación traducida automáticamente

Artículo escrito por ddeevviissaavviittaa y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *