You need to perform set operations to find the union, intersection, disjunction, and difference of two collections.
Use one of four CollectionUtils
methods to perform set operations—union(
)
, intersection( )
,
disjunction()
, and subtract( )
. Example 5-19
demonstrates the use of these four methods with two Collection
s.
Example 5-19. Using CollectionUtils union( ), intersection( ), disjunction( ), and subtract( )
import java.util.*; String[] arrayA = new String[] { "1", "2", "3", "3", "4", "5" }; String[] arrayB = new String[] { "3", "4", "4", "5", "6", "7" }; List a = Arrays.asList( arrayA ); List b = Arrays.asList( arrayB ); Collection union = CollectionUtils.union( a, b ); Collection intersection = CollectionUtils.intersection( a, b ); Collection disjunction = CollectionUtils.disjunction( a, b ); Collection subtract = CollectionUtils.subtract( a, b ); Collections.sort( union ); Collections.sort( intersection ); Collections.sort( disjunction ); Collections.sort( subtract ); System.out.println( "A: " + ArrayUtils.toString( a.toArray( ) ) ); System.out.println( "B: " + ArrayUtils.toString( b.toArray( ) ) ); System.out.println( "Union: " + ArrayUtils.toString( union.toArray( ) ) ); System.out.println( "Intersection: " + ArrayUtils.toString( intersection.toArray( ) ) ); System.out.println( "Disjunction: " + ArrayUtils.toString( disjunction.toArray( ) ) ); System.out.println( "Subtract: " + ArrayUtils.toString( subtract.toArray( ) ) );
The previous example performs these four operations on two
List
objects, a
and b
,
printing the results with ArrayUtils.toString(
)
:
A: {1,2,2,2,3,3,4,5} B: {3,4,4,5,6,7} Union: {1,2,2,2,3,3,4,4,5,6,7} Intersection: {3,4,5} Disjunction: {1,2,2,2,3,4,6,7} Subtract: {1,2,2,2,3}
Pay close attention to how these four functions deal with
cardinality. These four set operations on CollectionUtils
—union( )
, intersection( )
, disjunction( )
, and subtraction( )
—all respect the cardinality of
objects in both Collection
s. Take,
for example, the results of the union of a
and b
in
the Solution; the union of a
and
b
contains two "3" elements and two
"4" elements. The cardinality of an element in a union is the maximum
cardinality of the element in both Collection
s. On the other hand, the
cardinality of an element in an intersection is the minimum cardinality
of the element in both Collection
s;
there is only one "3" element and one "4" element in the intersection of
a
and b
.
Figure 5-3 illustrates each set operation with a Venn diagram. "A union B" is the combination of A and B, and "A intersection B" is the common overlap of A and B. "A subtract B" is all elements only in A, and "A disjunction B" is all elements in either A or B but not both.