Skip to content

Commit 258cf42

Browse files
authored
BAEL-7910: Avoid Inserting Duplicate in ArrayList in Java (#16730)
1 parent 2e9197c commit 258cf42

File tree

1 file changed

+102
-0
lines changed

1 file changed

+102
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,102 @@
1+
package com.baeldung.avoidduplicatearraylist;
2+
3+
import static org.assertj.core.api.Assertions.assertThat;
4+
5+
import java.util.ArrayList;
6+
import java.util.Arrays;
7+
import java.util.HashSet;
8+
import java.util.List;
9+
import java.util.Optional;
10+
import java.util.Set;
11+
12+
import org.apache.commons.collections4.CollectionUtils;
13+
import org.junit.jupiter.api.Test;
14+
15+
import com.google.common.collect.Iterables;
16+
17+
class AvoidDuplicateInArrayListUnitTest {
18+
19+
@Test
20+
void givenArrayList_whenUsingSet_thenAvoidDuplicates() {
21+
Set<String> distinctCities = new HashSet<>(Arrays.asList("Tamassint", "Madrid", "Paris", "Tokyo"));
22+
23+
String newCity = "Paris";
24+
distinctCities.add(newCity);
25+
ArrayList<String> arrayListCities = new ArrayList<>(distinctCities);
26+
27+
assertThat(arrayListCities).hasSameSizeAs(distinctCities);
28+
}
29+
30+
@Test
31+
void givenArrayList_whenUsingContains_thenAvoidDuplicates() {
32+
List<String> distinctCities = Arrays.asList("Tamassint", "Madrid", "Paris", "Tokyo");
33+
ArrayList<String> arrayListCities = new ArrayList<>(distinctCities);
34+
35+
String newCity = "Madrid";
36+
if (!arrayListCities.contains(newCity)) {
37+
arrayListCities.add(newCity);
38+
}
39+
40+
assertThat(arrayListCities).hasSameSizeAs(distinctCities);
41+
}
42+
43+
@Test
44+
void givenArrayList_whenUsingAnyMatch_thenAvoidDuplicates() {
45+
List<String> distinctCities = Arrays.asList("Tamassint", "Madrid", "Paris", "Tokyo");
46+
ArrayList<String> arrayListCities = new ArrayList<>(distinctCities);
47+
48+
String newCity = "Tamassint";
49+
boolean isCityPresent = arrayListCities.stream()
50+
.anyMatch(city -> city.equals(newCity));
51+
if (!isCityPresent) {
52+
arrayListCities.add(newCity);
53+
}
54+
55+
assertThat(arrayListCities).hasSameSizeAs(distinctCities);
56+
}
57+
58+
@Test
59+
void givenArrayList_whenUsingFilterAndFindFirst_thenAvoidDuplicates() {
60+
List<String> distinctCities = Arrays.asList("Tamassint", "Madrid", "Paris", "Tokyo");
61+
ArrayList<String> arrayListCities = new ArrayList<>(distinctCities);
62+
63+
String newCity = "Tamassint";
64+
Optional<String> optionalCity = arrayListCities.stream()
65+
.filter(city -> city.equals(newCity))
66+
.findFirst();
67+
if (optionalCity.isEmpty()) {
68+
arrayListCities.add(newCity);
69+
}
70+
71+
assertThat(arrayListCities).hasSameSizeAs(distinctCities);
72+
}
73+
74+
@Test
75+
void givenArrayList_whenUsingCollectionUtilsContainsAny_thenAvoidDuplicates() {
76+
List<String> distinctCities = Arrays.asList("Tamassint", "Madrid", "Paris", "Tokyo");
77+
ArrayList<String> arrayListCities = new ArrayList<>(distinctCities);
78+
79+
String newCity = "Tokyo";
80+
boolean isCityPresent = CollectionUtils.containsAny(arrayListCities, newCity);
81+
if (!isCityPresent) {
82+
arrayListCities.add(newCity);
83+
}
84+
85+
assertThat(arrayListCities).hasSameSizeAs(distinctCities);
86+
}
87+
88+
@Test
89+
void givenArrayList_whenUsingIterablesContains_thenAvoidDuplicates() {
90+
List<String> distinctCities = Arrays.asList("Tamassint", "Madrid", "Paris", "Tokyo");
91+
ArrayList<String> arrayListCities = new ArrayList<>(distinctCities);
92+
93+
String newCity = "Paris";
94+
boolean isCityPresent = Iterables.contains(arrayListCities, newCity);
95+
if (!isCityPresent) {
96+
arrayListCities.add(newCity);
97+
}
98+
99+
assertThat(arrayListCities).hasSameSizeAs(distinctCities);
100+
}
101+
102+
}

0 commit comments

Comments
 (0)