Adding to the Value in a Hash Table

How to add a value into an array of values in Hash Table Java

Best approach is a Map of Integer as Key and a List as Value.
Like this:

// This is a member, meaning it's on class level.
private Map<Integer, List<Integer>> myHashMap = new HashMap<>();

// Now populate.. e.g. Key=123, Value 23
private addValueForKey(Integer key, Integer value) {
List<Integer> values = myHashMap.get( key );
if (values == null) {
values = new ArrayList<Integer>();
}

values.add( value );
}

Now each time you want to add a value to your hashmap, just call the method. for example:

addValueForKey( 123, 23 );
addValueForKey( 123, 56 );

Adding to the value in a Hashtable [Java]

Assuming your Hashtable is global:

public void addGoals(String name, int goals)
{
goalScorers.put(name, goalScorers.get(name) + goals);
}

How to add new keys and values to existing hash table in R?

The documentation for the hash package provides a number of syntax varieties for adding new elements to a hash:

h <- hash()
.set( h, keys=letters, values=1:26 )
.set( h, a="foo", b="bar", c="baz" )
.set( h, c( aa="foo", ab="bar", ac="baz" ) )

The first .set option would seem to be the best for bulk inserts of key value pairs. You would only need a pair of vectors, ordered in such a way that the key value representation is setup the way you want.

Inserting an element to a full hash table with a constant number of buckets

A real implementation usually allows for a hash table to be able to resize, but this usually takes a long time and is undesired. Considering a fixed-size hash table, it would probably return an error code or throw an exception for the user to treat that error or not.

Or will we have to actually replace element that has the same hash value with a new element?

In Java's HashMap if you add a key that equals to another already present in the hash table only the value associated with that key will be replaced by the new one, but never if two keys hash to the same hash.

How to PUSH a value into an existing list within a hash table

When you push on existing-values, you only modify the local variable.

You can do this much simpler by using the place magic in a single form:

(defun add-to-table (key value)
(push value (gethash key *ht* nil)))

This sees the chain of gethash and list access as a place, so that the push works in both cases.

You can express this explicitly by first ensuring the existence of the hash-table entry:

(defun add-to-table (key value)
(unless (nth-value 1 (gethash key *ht*))
(setf (gethash key *ht*) ()))
(push value (gethash key *ht*)))

Also see ensure-gethash in the alexandria utility library for a more general construct.



Related Topics



Leave a reply



Submit