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.
18.118.138.195