Created
April 8, 2019 23:14
-
-
Save dfparker2002/ba42c894d0deff1f519b2b51a2e91e85 to your computer and use it in GitHub Desktop.
Java 8, Guava, Apache collections Set operations
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
/* | |
src https://github.com/eugenp/tutorials/blob/4d0bffbacd11bd5151eba98fd2d5da515ff3121e/core-java-collections-set/src/test/java/com/baeldung/set/SetOperations.java | |
*/ | |
import static org.junit.Assert.*; | |
import org.apache.commons.collections4.SetUtils; | |
import org.junit.Test; | |
import com.google.common.collect.Sets; | |
import java.util.Arrays; | |
import java.util.HashSet; | |
import java.util.Set; | |
import java.util.stream.Collectors; | |
import java.util.stream.Stream; | |
public class SetOperations { | |
private Set<Integer> setA = setOf(1,2,3,4); | |
private Set<Integer> setB = setOf(2,4,6,8); | |
private static Set<Integer> setOf(Integer... values) { | |
return new HashSet<Integer>(Arrays.asList(values)); | |
} | |
@Test | |
public void givenTwoSets_WhenWeRetainAll_ThenWeIntersectThem() { | |
Set<Integer> intersectSet = new HashSet<>(setA); | |
intersectSet.retainAll(setB); | |
System.out.println("Intersection of set1 and set2 is " + intersectSet); | |
assertEquals(setOf(2,4), intersectSet); | |
} | |
@Test | |
public void givenTwoSets_WhenWeAddAll_ThenWeUnionThem() { | |
Set<Integer> unionSet = new HashSet<>(setA); | |
unionSet.addAll(setB); | |
System.out.println("set1 is " + setA); | |
System.out.println("set2 is " + setB); | |
System.out.println("Union of set1 and set2 is " + unionSet); | |
assertEquals(setOf(1,2,3,4,6,8), unionSet); | |
} | |
@Test | |
public void givenTwoSets_WhenRemoveAll_ThenWeGetTheDifference() { | |
Set<Integer> differenceSet = new HashSet<>(setA); | |
differenceSet.removeAll(setB); | |
System.out.println("Difference of set1 and set2 is " + differenceSet); | |
assertEquals(setOf(1,3), differenceSet); | |
} | |
@Test | |
public void givenTwoStreams_WhenWeFilterThem_ThenWeCanGetTheIntersect() { | |
Set<Integer> intersectSet = setA.stream() | |
.filter(setB::contains) | |
.collect(Collectors.toSet()); | |
System.out.println("Stream Intersection of set1 and set2 is " + intersectSet); | |
assertEquals(setOf(2,4), intersectSet); | |
} | |
@Test | |
public void givenTwoStreams_WhenWeConcatThem_ThenWeGetTheUnion() { | |
Set<Integer> unionSet = Stream.concat(setA.stream(), setB.stream()) | |
.collect(Collectors.toSet()); | |
System.out.println("Stream Union of set1 and set2 is " + unionSet); | |
assertEquals(setOf(1,2,3,4,6,8), unionSet); | |
} | |
@Test | |
public void givenTwoStreams_WhenWeFilterThem_ThenWeCanGetTheDifference() { | |
Set<Integer> differenceSet = setA.stream() | |
.filter(val -> !setB.contains(val)) | |
.collect(Collectors.toSet()); | |
System.out.println("Stream Difference of set1 and set2 is " + differenceSet); | |
assertEquals(setOf(1,3), differenceSet); | |
} | |
@Test | |
public void givenTwoSets_WhenWeUseApacheCommonsIntersect_ThenWeGetTheIntersect() { | |
Set<Integer> intersectSet = SetUtils.intersection(setA, setB); | |
assertEquals(setOf(2,4), intersectSet); | |
} | |
@Test | |
public void givenTwoSets_WhenWeUseApacheCommonsUnion_ThenWeGetTheUnion() { | |
Set<Integer> unionSet = SetUtils.union(setA, setB); | |
assertEquals(setOf(1,2,3,4,6,8), unionSet); | |
} | |
@Test | |
public void givenTwoSets_WhenWeUseGuavaIntersect_ThenWeGetTheIntersect() { | |
Set<Integer> intersectSet = Sets.intersection(setA, setB); | |
assertEquals(setOf(2,4), intersectSet); | |
} | |
@Test | |
public void givenTwoSets_WhenWeUseGuavaUnion_ThenWeGetTheUnion() { | |
Set<Integer> unionSet = Sets.union(setA, setB); | |
assertEquals(setOf(1,2,3,4,6,8), unionSet); | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment