Next: Resizing of Hash Tables, Previous: Construction of Hash Tables, Up: Hash Tables [Contents][Index]
The procedures described in this section are the basic operations on hash tables. They provide the functionality most often needed by programmers. Subsequent sections describe other operations that provide additional functionality needed by some applications.
Returns #t
if object is a hash table, otherwise returns
#f
.
Associates datum with key in hash-table and returns an unspecified result. The average time required by this operation is bounded by a constant.
Returns the datum associated with key in hash-table. If there is no association for key, default is returned. The average time required by this operation is bounded by a constant.
If hash-table has an association for key, removes it. Returns an unspecified result. The average time required by this operation is bounded by a constant.
Removes all associations in hash-table and returns an unspecified result. The average and worst-case times required by this operation are bounded by a constant.
Returns the number of associations in hash-table as an exact non-negative integer. If hash-table does not hold its keys and data strongly, this is a conservative upper bound that may count some associations whose keys or data have recently been reclaimed by the garbage collector. The average and worst-case times required by this operation are bounded by a constant.
Returns the contents of hash-table as a newly allocated alist.
Each element of the alist is a pair (key . datum)
where key is one of the keys of hash-table, and datum
is its associated datum. The average and worst-case times required by
this operation are linear in the number of associations
in the table.
Returns a newly allocated list of the keys in hash-table. The average and worst-case times required by this operation are linear in the number of associations in the table.
Returns a newly allocated list of the datums in hash-table. Each element of the list corresponds to one of the associations in hash-table; if the table contains multiple associations with the same datum, so will this list. The average and worst-case times required by this operation are linear in the number of associations in the table.
Procedure must be a procedure of two arguments. Invokes
procedure once for each association in hash-table, passing
the association’s key and datum as arguments, in that order.
Returns an unspecified result. Procedure must not modify
hash-table, with one exception: it is permitted to call
hash-table/remove!
to remove the association being processed.
The following procedure is useful when there is no sensible default
value for hash-table/get
and the caller must choose between
different actions depending on whether there is a datum associated
with the key.
If-found must be a procedure of one argument, and
if-not-found must be a procedure of no arguments. If
hash-table contains an association for key, if-found
is invoked on the datum of the association. Otherwise,
if-not-found is invoked with no arguments. In either case, the
result yielded by the invoked procedure is returned as the result of
hash-table/lookup
(hash-table/lookup
reduces into
the invoked procedure, i.e. calls it tail-recursively). The average
time required by this operation is bounded by a constant.
Procedure must be a procedure of one argument. Applies procedure to the datum associated with key in hash-table or to default if there is no association for key, associates the result with key, and returns that same result. Procedure must not use hash-table. The average time required by this operation is bounded by a constant.
Get-default must be a procedure of no arguments. Ensures that
hash-table has an association for key and returns the
associated datum. If hash-table did not have a datum associated
with key, hash-table/intern!
applies get-default to
zero arguments to generate one. As with hash-table/modify!
,
get-default must not use hash-table. The average time
required by this operation is bounded by a constant.
Next: Resizing of Hash Tables, Previous: Construction of Hash Tables, Up: Hash Tables [Contents][Index]