This question threw me too. It smells like a set but isn't one. How annoying.
But there is another odd thing in answer three:
3) An array of boolean primitives that indicate zeros or ones
As Bill suggested, I looked BitSet up in JavaDoc and it says
Each component of the bit set has a boolean value.
Now we all know that you cannot assign either a zero or a one to a boolean. So anwser three still seems a bit off. In defense of the wording, the class has methods that set, flip and clear bits which sounds more like zeroes and ones than booleans.
Another confusing detail:
JavaDoc says "This class implements a
vector of bits...". This is not to be confused with java.util.Vector which takes objects, not primitives.
So BitSet is a vector of bits that is neither a Set nor a Vector. As a language evolves you often see odd quirks like this. Even Java has its share.