Skip to content

Commit 9c0dbe0

Browse files
authored
Merge pull request #37 from amitrp/aph-15276_difference_between_two_Lists
aph-15276 difference between two lists
2 parents 0d60dd4 + e078068 commit 9c0dbe0

File tree

5 files changed

+85
-7
lines changed

5 files changed

+85
-7
lines changed

README.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -115,6 +115,7 @@ This project contains Core Java code samples that are used as examples on [amitp
115115

116116
### [Asserting Java Lists for Equality Ignoring the Order](https://www.amitph.com/java-assert-lists-equals-ignore-order/)
117117

118+
### [Finding the Differences Between Two Java Lists](https://www.amitph.com/java-find-lists-difference/)
118119

119120
## How to use
120121
*Clone the project using*

java-collections/README.md

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -78,6 +78,8 @@ This project contains Java Collections code samples that are used as examples on
7878

7979
### [Asserting Java Lists for Equality Ignoring the Order](https://www.amitph.com/java-assert-lists-equals-ignore-order/)
8080

81+
### [Finding the Differences Between Two Java Lists](https://www.amitph.com/java-find-lists-difference/)
82+
8183
## How to use
8284
*Clone the project using*
8385
```
@@ -87,6 +89,3 @@ This project contains Java Collections code samples that are used as examples on
8789
```
8890
~ cd java-collections/
8991
```
90-
91-
92-

java-collections/src/main/java/com/amitph/java/collections/list/Deduplicator.java renamed to java-collections/src/main/java/com/amitph/java/collections/list/ListDeduplicator.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
import java.util.LinkedHashSet;
55
import java.util.List;
66

7-
public class Deduplicator {
7+
public class ListDeduplicator {
88
public <T> List<T> usingStreamDistinct(List<T> list) {
99
return list.stream()
1010
.distinct()
@@ -16,7 +16,7 @@ public <T> List<T> usingJavaSet(List<T> list) {
1616
}
1717

1818
public static void main(String[] ar) {
19-
Deduplicator deduplicator = new Deduplicator();
19+
ListDeduplicator deduplicator = new ListDeduplicator();
2020

2121
System.out.println("Remove duplicates from list: using Streams distinct()");
2222
deduplicator.usingStreamDistinct(List.of(1, 2, 4, 2, 1, 4, 2, 5, 6, 4))

java-collections/src/main/java/com/amitph/java/collections/list/Partitioner.java renamed to java-collections/src/main/java/com/amitph/java/collections/list/ListPartitioner.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@
99
import java.util.List;
1010
import java.util.stream.IntStream;
1111

12-
public class Partitioner {
12+
public class ListPartitioner {
1313
public <T> List<List<T>> partitionListUsingGuava(List<T> list, int size) {
1414
return Lists.partition(list, size);
1515
}
@@ -45,7 +45,7 @@ public <T> List<List<T>> partitionListUsingPlainJava(List<T> list, int size) {
4545
}
4646

4747
public static void main(String[] a) {
48-
Partitioner partitioner = new Partitioner();
48+
ListPartitioner partitioner = new ListPartitioner();
4949

5050
System.out.println("Partition a Java List: Using Guava");
5151
List<Integer> list = IntStream.rangeClosed(1, 21).boxed().toList();
Lines changed: 78 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,78 @@
1+
package com.amitph.java.collections.list;
2+
3+
import com.google.common.collect.Sets;
4+
import org.apache.commons.collections4.CollectionUtils;
5+
6+
import java.util.ArrayList;
7+
import java.util.HashSet;
8+
import java.util.List;
9+
import java.util.Set;
10+
11+
public class ListsDifferenceFinder {
12+
13+
private final List<String> one = List.of("Ray", "Tim", "Leo", "Bee", "Tim");
14+
private final List<String> two = List.of("Ray", "Mia", "Lyn", "Bee", "Zoe", "Mia");
15+
16+
public void usingPlainJava() {
17+
System.out.println("The first List minus the second List");
18+
List<String> difference = new ArrayList<>(one);
19+
difference.removeAll(two);
20+
21+
System.out.println(difference);
22+
23+
System.out.println("The second List minus the first List");
24+
difference = new ArrayList<>(two);
25+
difference.removeAll(one);
26+
27+
System.out.println(difference);
28+
}
29+
30+
public void usingStreams() {
31+
System.out.println("The first List minus the second List");
32+
List<String> difference = one.stream()
33+
.filter(e -> !two.contains(e))
34+
.toList();
35+
System.out.println(difference);
36+
37+
System.out.println("The second List minus the first List");
38+
difference = two.stream()
39+
.filter(e -> !one.contains(e))
40+
.toList();
41+
System.out.println(difference);
42+
}
43+
44+
public void usingApacheCommons() {
45+
System.out.println("The first List minus the second List");
46+
List<String> differences = new ArrayList<>(CollectionUtils.removeAll(one, two));
47+
System.out.println(differences);
48+
49+
System.out.println("The second List minus the first List");
50+
differences = new ArrayList<>((CollectionUtils.removeAll(two, one)));
51+
System.out.println(differences);
52+
}
53+
54+
public void usingGuava() {
55+
Set<String> differences = Sets.difference(new HashSet<>(two), new HashSet<>(one));
56+
System.out.println(differences);
57+
}
58+
59+
60+
public static void main(String[] a) {
61+
ListsDifferenceFinder differenceFinder = new ListsDifferenceFinder();
62+
63+
System.out.println("Using Plain Java:");
64+
differenceFinder.usingPlainJava();
65+
66+
System.out.println();
67+
System.out.println("Using Java Streams:");
68+
differenceFinder.usingStreams();
69+
70+
System.out.println();
71+
System.out.println("Using Apache Commons Collection:");
72+
differenceFinder.usingApacheCommons();
73+
74+
System.out.println();
75+
System.out.println("Using Guava:");
76+
differenceFinder.usingGuava();
77+
}
78+
}

0 commit comments

Comments
 (0)