I expect the following code would give me a subset and a complementary set.
But actually, the result shows that "Error: This is not a subset!"
What it.next() get and how to revise my code to get the result I want? Thanks!
package Chapter8;
import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;
public class Three {
int n;
Set<Integer> set = new HashSet<Integer>();
public static void main(String args[]) {
Three three = new Three(10);
three.display(three.set);
Set<Integer> test = new HashSet<Integer>();
Iterator<Integer> it = three.set.iterator();
while(it.hasNext()) {
test.add(it.next());
three.display(test);
three.display(three.complementarySet(test));
}
}
boolean contains(Set<Integer> s) {
if (this.set.contains(s))
return true;
else
return false;
}
Set<Integer> complementarySet(Set<Integer> s) {
if(this.set.contains(s)){
Set<Integer> result = this.set;
result.removeAll(s);
return result;
}
else {
System.out.println("Error: This is not a subset!");
return null;
}
}
Three() {
this.n = 3;
this.randomSet();
}
Three(int n) {
this.n = n;
this.randomSet();
}
void randomSet() {
while(set.size() < n) {
set.add((int)(Math.random()*10));
}
}
void display(Set<Integer> s) {
System.out.println("The set is " + s.toString());
}
}
You probably want to use set.containsAll(Collection <?> C)
for checking if Collection(Set, in this case) is a subset of 'set'. From the docs: http://docs.oracle.com/javase/7/docs/api/java/util/Set.html#containsAll(java.util.Collection)
boolean containsAll(Collection c)
Returns true if this set contains all of the elements of the specified collection. If the specified collection is also a set, this method returns true if it is a subset of this set.
Your problem is in this part:
set.contains(s)
that doesn't do what you think it does, it doesn't take as an argument another Set
to see if its members are contained in the firstset
. It rather looks if the argument passed it is in the Set.
You need to iterate over the "contained" set and use set.contains(element)
for each element in the contained set.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With