#import <ObjectiveLib/HashSet.h>
Inheritance diagram for OLHashSet:
Public Member Functions | |
(OLHashIterator *) | - begin |
Return an iterator pointing to the beginning of the sequence. | |
(void) | - clear |
Remove all elements. | |
(int) | - compare: |
Compare this hash set to another object. | |
(id) | - copy |
Make a copy of this hash set. | |
(unsigned) | - count: |
Return the number of elements equal to value. | |
(BOOL) | - empty |
Test whether the set is empty. | |
(OLHashIterator *) | - end |
Return an iterator pointing to one position beyond the end of the sequence. | |
(OLPair *) | - equalRange: |
Return a range whose elements are equal to value. | |
(void) | - erase: |
Remove the element designated by where. | |
(void) | - eraseFrom:to: |
Remove a range of elements. | |
(unsigned) | - eraseValue: |
Erase all instances of value. | |
(OLHashIterator *) | - find: |
Find an element. | |
(id) | - insert: |
Insert an object into the set. | |
(void) | - insertFrom:to: |
Insert a range of objects into the set. | |
(BOOL) | - isEqual: |
Test whether another set is equal to this one. | |
(Object< OLBoolBinaryFunction > *) | - keyEqual |
Return the function used to compare keys in the set. | |
(unsigned) | - maxSize |
Return the maxiumum number of objects that can be stored in a set. | |
(unsigned) | - size |
Return the number of elements in the set. | |
(void) | - swap: |
Swap this set with another one. | |
(void) | - writeSelfToStream: |
Write the object to a stream. | |
Initializers and Deallocators | |
(id) | - free |
Finalize the set and deallocate any allocated memory. | |
(id) | - init |
Initialize the set. | |
(id) | - initFrom:to: |
Initialize the set. | |
(id) | - initFrom:to:tableSize: |
Initialize the set. | |
(id) | - initFrom:to:tableSize:keyEqual: |
Initialize the set. | |
(id) | - initWithHashSet: |
Initialize the set. | |
(id) | - initWithObjectInStream: |
Initialize the object. | |
(id) | - initWithTableSize: |
Initialize the set. | |
(id) | - initWithTableSize:keyEqual: |
Initialize the set. | |
Static Public Member Functions | |
(id) | + hashSet |
Create and return a new hash set. | |
(id) | + hashSetFrom:to: |
Create and return a new hash set. | |
(id) | + hashSetWithHashSet: |
Create and return a new hash set. | |
Protected Attributes | |
OLHashTable * | table |
The hash table that provides the underlying data structure. |
The class provides very similar functionality to OLSet, but it uses a hash table as the underlying data structure. Like OLSet it is a container of unique objects, and attempting to insert an object that is already in the set will fail. However, there are important differences to OLSet due to the use of the hash table as the data structure. Searching for an object in a hash set is inherently very fast, which is the main reason to choose to use OLHashSet over OLSet. Another difference is that, unlike OLSet, items in a hash set do not appear in a predictable order. Of course, the items are not ordered randomly, but the order will depend on the result of the hash function used for elements in the hash set.
OLHashSet requires a function object to test elements for equality, as equal elements are grouped together. If no function is explicitly given, then OLEqualTo is used.
- (OLHashIterator*) begin |
Return an iterator pointing to the beginning of the sequence.
- (void) clear |
Remove all elements.
- (int) compare: | (id) | other |
Compare this hash set to another object.
If the other object is of type OLHashSet, each of the contained objects is compared to the corresponding object in other by calling the compare:
method.
other | the object with which to compare this one |
- (id) copy |
Make a copy of this hash set.
- (unsigned) count: | (id) | value |
Return the number of elements equal to value.
hash
.value | the value to search for in the set |
- (BOOL) empty |
Test whether the set is empty.
- (OLHashIterator*) end |
Return an iterator pointing to one position beyond the end of the sequence.
- (OLPair*) equalRange: | (id) | value |
Return a range whose elements are equal to value.
The returned pair contains two instances of OLHashIterator delimiting the range of elements.
hash
.value | the value for which to search |
- (void) erase: | (OLHashIterator *) | where |
Remove the element designated by where.
where | an iterator designating the element to remove |
- (void) eraseFrom: | (OLHashIterator *) | first | ||
to: | (OLHashIterator *) | last | ||
Remove a range of elements.
All elements in the range [first, last)
will be removed from the set.
first | the first in the range of elements to remove | |
last | one position beyond the last in the range of elements to remove |
- (unsigned) eraseValue: | (id) | value |
Erase all instances of value.
The set is searched for value, all instances are removed from the set and the number removed is returned.
hash
.value | the value to remove from the set |
- (OLHashIterator*) find: | (id) | object |
Find an element.
The element object is searched for in the set and an iterator to its location is returned. If the element does not exist in the set, then the returned iterator will be equal to the iterator returned by end.
hash
.object | the value for which to search |
- (id) free |
Finalize the set and deallocate any allocated memory.
+ (id) hashSet |
Create and return a new hash set.
+ (id) hashSetFrom: | (OLForwardIterator *) | first | ||
to: | (OLForwardIterator *) | last | ||
Create and return a new hash set.
The hash set is initialized with the contents of the range [first, last)
.
[first, last)
must respond to the message hash
.first | the first in the range of elements to insert | |
last | one beyond the last in the range of elements to insert |
+ (id) hashSetWithHashSet: | (OLHashSet *) | right |
Create and return a new hash set.
The hash set is initialized with the contents of right.
right | the hash set to copy |
- (id) init |
Initialize the set.
The set is empty and uses OLEqualTo to test for equality.
- (id) initFrom: | (OLForwardIterator *) | first | ||
to: | (OLForwardIterator *) | last | ||
Initialize the set.
The set uses the comparison function OLEqualTo to test for equality, and inserts all elements in the range [first, last)
.
[first, last)
must respond to the message hash
.first | the first in the range of elements to insert | |
last | one beyond the last in the range of elements to insert |
- (id) initFrom: | (OLForwardIterator *) | first | ||
to: | (OLForwardIterator *) | last | ||
tableSize: | (unsigned) | size | ||
Initialize the set.
The set uses the comparison function OLEqualTo to test for equality, and inserts all elements in the range [first, last)
. The parameter size is used as a hint for the desired hash table size. The table size will grow as needed, so it is not crucial that this parameter carry any particular meaning. However, providing a size can reduce the number of memory allocations required to build the table.
[first, last)
must respond to the message hash
.first | the first in the range of elements to insert | |
last | one beyond the last in the range of elements to insert | |
size | a hint as to the desired hash table size |
- (id) initFrom: | (OLForwardIterator *) | first | ||
to: | (OLForwardIterator *) | last | ||
tableSize: | (unsigned) | size | ||
keyEqual: | (Object< OLBoolBinaryFunction > *) | eq | ||
Initialize the set.
The set uses the comparison function eq to test for equality, and inserts all elements in the range [first, last)
. The parameter size is used as a hint for the desired hash table size. The table size will grow as needed, so it is not crucial that this parameter carry any particular meaning. However, providing a size can reduce the number of memory allocations required to build the table.
[first, last)
must respond to the message hash
.first | the first in the range of elements to insert | |
last | one beyond the last in the range of elements to insert | |
size | a hint as to the desired hash table size | |
eq | the function object used to test elements for equality |
- (id) initWithHashSet: | (OLHashSet *) | right |
Initialize the set.
The set copies the comparison function and all elements from right.
right | the hash set to copy |
- (id) initWithObjectInStream: | (OLObjectInStream *) | stream |
Initialize the object.
Each instance variable is read from stream and all other initialization is performed.
stream | the stream from which to read |
Reimplemented from < OLStreamable >.
- (id) initWithTableSize: | (unsigned) | size |
Initialize the set.
The set is initially empty and uses OLEqualTo to test elements for equality. The parameter size is a hint as to the desired capacity for the hash table. The table will grow as needed, so it isn't strictly necessary to specify a table size, but providing a valid hint can reduce the number of memory allocations performed.
size | a hint as to the desired hash table size |
- (id) initWithTableSize: | (unsigned) | size | ||
keyEqual: | (Object< OLBoolBinaryFunction > *) | eq | ||
Initialize the set.
The set is initially empty and uses eq to test elements for equality. The parameter size is a hint as to the desired capacity for the hash table. The table will grow as needed, so it isn't strictly necessary to specify a table size, but providing a valid hint can reduce the number of memory allocations performed.
size | a hint as to the desired hash table size | |
eq | the function object used to test elements for equality |
- (id) insert: | (id) | object |
Insert an object into the set.
An attempt is made to insert object into the set, and an instance of OLPair is returned indicating the state of the insertion. The first element in the returned pair is an instance of OLHashIterator indicating the position of object in the set, and the second element of the returned pair is an object that responds to the message boolValue
. The message boolValue
will return YES if the insertion was successful, or NO if not.
hash
.object | the element to insert |
Reimplemented in OLHashMultiSet.
- (void) insertFrom: | (OLForwardIterator *) | first | ||
to: | (OLForwardIterator *) | last | ||
Insert a range of objects into the set.
An attempt is made to insert all objects in the range [first, last)
, however there is no guarantee that any of the elements in the range will actually be inserted if they already exist in the set.
[first, last)
must respond to the message hash
.first | the first in the range of objects to insert | |
last | one position beyond the last in the range of objects to insert |
Reimplemented in OLHashMultiSet.
- (BOOL) isEqual: | (id) | object |
Test whether another set is equal to this one.
Two sets are considered equal if they contain the same number of objects and the objects are in the same order and each object is equal to the corresponding object in the other set.
object | the object to test |
Reimplemented in OLHashMultiSet.
- (Object<OLBoolBinaryFunction>*) keyEqual |
Return the function used to compare keys in the set.
- (unsigned) maxSize |
Return the maxiumum number of objects that can be stored in a set.
This limit is theoretical, meaning that there is no guarantee that you can insert this many objects into any given set. The memory conditions of the run-time system play an important role.
- (unsigned) size |
Return the number of elements in the set.
- (void) swap: | (OLHashSet *) | right |
Swap this set with another one.
All elements in right will be placed into this set, and all elements in this set will be placed in right.
right | the set with which to swap this one |
- (void) writeSelfToStream: | (OLObjectOutStream *) | stream |
Write the object to a stream.
All instance variables are written to stream.
stream | the stream to which to write. |
Reimplemented from < OLStreamable >.
- (OLHashTable*) table [protected] |
The hash table that provides the underlying data structure.
|