Sha256: d2cc026e0df2ec664344ad7495443d253386d039d5470f3a2c0fcbe164b4fce2
Contents?: true
Size: 1.87 KB
Versions: 194
Compression:
Stored size: 1.87 KB
Contents
import java.util.Collection; import java.util.Collections; import java.util.HashSet; import java.util.Set; import java.util.function.Predicate; import java.util.stream.Collectors; public class CustomSet<T> { private Set<T> set; public CustomSet() { this(Collections.EMPTY_LIST); } public CustomSet(Collection<T> data) { set = new HashSet<>(data.size()); this.set.addAll(data); } public boolean isEmpty() { return set.isEmpty(); } public boolean contains(T element) { return set.contains(element); } public boolean isSubset(CustomSet<T> anotherSet) { return set.containsAll(anotherSet.set); } public boolean isDisjoint(CustomSet<T> anotherSet) { if (set.isEmpty() || anotherSet.set.isEmpty()) { return true; } return set.stream() .filter(elem -> anotherSet.set.contains(elem)) .count() == 0; } public boolean equals(CustomSet<T> anotherSet) { return set.equals(anotherSet.set); } public boolean add(T element) { return set.add(element); } public CustomSet<T> getIntersection(CustomSet<T> anotherSet) { return new CustomSet<>( set.stream() .filter(anotherSet.set::contains) .collect(Collectors.toList()) ); } public CustomSet<T> getUnion(CustomSet<T> anotherSet) { final Set<T> union = new HashSet<>(set); union.addAll(anotherSet.set); return new CustomSet<>(union); } public CustomSet<T> getDifference(CustomSet<T> anotherSet) { final Predicate<T> predicate = anotherSet::contains; return new CustomSet<>( set.stream() .filter(predicate.negate()) .collect(Collectors.toList()) ); } }
Version data entries
194 entries across 194 versions & 1 rubygems