EnumSet--what the...?

G

George Cherry

Roedy Green said:
my background is math. I expect operations like union, intersection,
on something that calls itself a set, which map very nicely to what an
assembler programmer like me does with bitmaps. It turns out the
interesting methods of an EnumSet are way down in the AbstractSet
class.

Okay, but Joshua Bloch's elegant Collections Framework
gives you all the set operations--and they work between different
Set implementations (including EnumSet) very conveniently.
EnumSet implements the Collections Framework's root
interface, Collection, and, of course, its subinterface, Set.
It turns out that EnumSet's relevant bulk operations are
way up in the Collection interface, and they are defined
explicitly as set operations in the API for the Set interface.
(Are interfaces neat or what?)

Bloch's excellent tutorial on the Java Collections Framework
is at

http://java.sun.com/docs/books/tutorial/collections/

The following is from the tutorial

The bulk operations are particularly well suited to Sets; when applied to
sets, they perform standard set-algebraic operations. Suppose s1 and s2 are
Sets. Here's what the bulk operations do:
a.. s1.containsAll(s2): Returns true if s2 is a subset of s1. (s2 is a
subset of s1 if set s1 contains all the elements in s2.)
b.. s1.addAll(s2): Transforms s1 into the union of s1 and s2. (The union
of two sets is the set containing all the elements contained in either set.)
c.. s1.retainAll(s2): Transforms s1 into the intersection of s1 and s2.
(The intersection of two sets is the set containing only the elements that
are common to both sets.)
d.. s1.removeAll(s2): Transforms s1 into the (asymmetric) set difference
of s1 and s2. (For example, the set difference of s1 - s2 is the set
containing all the elements found in s1 but not in s2.)
There seems to be a heck of a lot of dithering compared with the way I
implemented such a feature in Abundance.

Fooling around directly with bits is a heck of a lot of dithering compared
with the way Bloch specified and implemented set operations in the
Java Collections Framework--and you still get the efficiency of bit
vector dithering, because the implementation of EnumSet uses bit
vectors behind the high level scene.

George W. Cherry
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

Forum statistics

Threads
473,763
Messages
2,569,563
Members
45,039
Latest member
CasimiraVa

Latest Threads

Top