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:
- eq : se usa para comparar cuando el hash de la tabla hash se realiza en objetos LISP.
- eql: también se usa para comparar cuando el hash de la tabla hash se realiza en objetos LISP.
- 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