|
Class: IdentitySet
Object
|
+--Collection
|
+--Set
|
+--IdentitySet
|
+--SemaphoreSet
|
+--SignalSet
|
+--WeakIdentitySet
- Package:
- stx:libbasic
- Category:
- Collections-Unordered
- Version:
- rev:
1.43
date: 2019/03/05 11:30:36
- user: stefan
- file: IdentitySet.st directory: libbasic
- module: stx stc-classLibrary: libbasic
- Author:
- Claus Gittinger
same as a Set but compares elements using ==
(i.e. they must be identical - not just equal in structure).
Since compare is on identity (using ==), hashing is also done via
#identityHash instead of #hash.
adding & removing
-
removeIdentical: oldObject ifAbsent: exceptionBlock
-
remove oldObject from the collection and return it.
If it was not in the collection return the value of exceptionBlock.
Uses identity compare (==) to search for an occurrence.
WARNING: do not remove elements while iterating over the receiver.
converting
-
asIdentitySet
-
return the receiver as an IdentitySet
-
asNewIdentitySet
-
make sure to return myself as a unique new IdentitySet
copying
-
copyWithout: anElement
-
return a new collection consisting of a copy of the receiver, with
ALL elements equal to elementToSkip are left out.
No error is reported, if elementToSkip is not in the collection.
usage example(s):
#(1 2 3 4 5 6 7) asSet copyWithout:5
|
private
-
collisionsFor: key
-
Return the number of searches - 1 required for key
-
find: key ifAbsent: aBlock
-
Look for the key in the receiver. If it is found, return
the index of the slot containing the key, otherwise
return the value of evaluating aBlock.
Redefined to compare for identity instead of equality
-
findIdentical: key ifAbsent: aBlock
-
IdentitySet does identity compare anyway...
-
findKeyOrNil: key
-
Look for the key in the receiver.
If it is found, return return the index of the first unused slot.
Grow the receiver, if key was not found, and no unused slots were present
Warning: an empty slot MUST be filled by the sender - it is only to be sent
by at:put: / add: - like methods.
-
findKeyOrNilOrDeletedEntry: key
-
Look for the key in the receiver.
If it is found, return return the index of the first unused slot.
Grow the receiver, if key was not found, and no unused slots were present
-
hashFor: aKey
-
return an initial index given a key.
queries
-
identicalContentsAs: aCollection
-
return true if the receiver and aCollection represent collections
with identical contents (but not caring for order).
-
includesIdentical: anObject
-
for identitySet, the #includes: test already tests for identity
set operations
-
\ aCollection
-
return a new set containing all elements of the receiver,
which are NOT also contained in the aCollection
For large collections you better use a Set for aCollection.
Redefined here to do identity comparison.
usage example(s):
#(0 1 2 3 4 5 6 7 8 9) asIdentitySet \ #(1 2 3) asSet
#(0 1 2 3 4 5 6 7 8 9) asIdentitySet \ #(1 2 3)
|
|