Skip to content

Commit eba76ca

Browse files
kyleandariecheyne
authored andcommitted
BAEL-2330 (eugenp#5694)
* Implementing Hexagonal Architecture in java * Removing duplicates from a string * Fix for the code review feedback - removing the hexagonal architecture code - removing the methods removeDuplicatesUsingCharArray - adding some meaningful sentences to test * Fix for the code review feedback - fix for removeDuplicatesUsingCharArray - adding unit testing - adding brackets around for loops * Fix for the code review feedback
1 parent 37181fa commit eba76ca

2 files changed

Lines changed: 153 additions & 0 deletions

File tree

Lines changed: 95 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
package com.baeldung.stringduplicates;
2+
3+
import java.util.Arrays;
4+
import java.util.HashSet;
5+
import java.util.LinkedHashSet;
6+
import java.util.Set;
7+
8+
public class RemoveDuplicateFromString {
9+
10+
11+
String removeDuplicatesUsingCharArray(String str) {
12+
13+
char[] chars = str.toCharArray();
14+
StringBuilder sb = new StringBuilder();
15+
int repeatedCtr;
16+
for (int i = 0; i < chars.length; i++) {
17+
repeatedCtr = 0;
18+
for (int j = i + 1; j < chars.length; j++) {
19+
if (chars[i] == chars[j]) {
20+
repeatedCtr++;
21+
}
22+
}
23+
if (repeatedCtr == 0) {
24+
sb.append(chars[i]);
25+
}
26+
}
27+
return sb.toString();
28+
}
29+
30+
String removeDuplicatesUsinglinkedHashSet(String str) {
31+
32+
StringBuilder sb = new StringBuilder();
33+
Set<Character> linkedHashSet = new LinkedHashSet<>();
34+
35+
for (int i = 0; i < str.length(); i++) {
36+
linkedHashSet.add(str.charAt(i));
37+
}
38+
39+
for (Character c : linkedHashSet) {
40+
sb.append(c);
41+
}
42+
43+
return sb.toString();
44+
}
45+
46+
String removeDuplicatesUsingSorting(String str) {
47+
48+
char[] chars = str.toCharArray();
49+
50+
Arrays.sort(chars);
51+
52+
StringBuilder sb = new StringBuilder();
53+
sb.append(chars[0]);
54+
for (int i = 1; i < chars.length; i++) {
55+
if (chars[i] != chars[i - 1]) {
56+
sb.append(chars[i]);
57+
}
58+
}
59+
60+
return sb.toString();
61+
}
62+
63+
String removeDuplicatesUsingHashSet(String str) {
64+
65+
StringBuilder sb = new StringBuilder();
66+
Set<Character> hashSet = new HashSet<>();
67+
68+
for (int i = 0; i < str.length(); i++) {
69+
hashSet.add(str.charAt(i));
70+
}
71+
72+
for (Character c : hashSet) {
73+
sb.append(c);
74+
}
75+
76+
return sb.toString();
77+
}
78+
79+
String removeDuplicatesUsingIndexOf(String str) {
80+
81+
StringBuilder sb = new StringBuilder();
82+
int idx;
83+
for (int i = 0; i < str.length(); i++) {
84+
char c = str.charAt(i);
85+
idx = str.indexOf(c, i + 1);
86+
if (idx == -1) {
87+
sb.append(c);
88+
}
89+
}
90+
return sb.toString();
91+
}
92+
93+
}
94+
95+
Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
package com.baeldung.stringduplicates;
2+
3+
import org.junit.Assert;
4+
import org.junit.Before;
5+
import org.junit.Test;
6+
7+
public class RemoveDuplicateFromStringUnitTest {
8+
9+
private final static String STR1 = "racecar";
10+
private final static String STR2 = "J2ee programming";
11+
private RemoveDuplicateFromString removeDuplicateFromString;
12+
13+
@Before
14+
public void executedBeforeEach() {
15+
removeDuplicateFromString = new RemoveDuplicateFromString();
16+
}
17+
18+
19+
@Test
20+
public void whenUsingCharArray_DuplicatesShouldBeRemovedWithoutKeepingStringOrder() {
21+
String str1 = removeDuplicateFromString.removeDuplicatesUsingCharArray(STR1);
22+
String str2 = removeDuplicateFromString.removeDuplicatesUsingCharArray(STR2);
23+
Assert.assertEquals("ecar", str1);
24+
Assert.assertEquals("J2e poraming", str2);
25+
}
26+
27+
@Test
28+
public void whenUsingLinkedHashSet_DuplicatesShouldBeRemovedAndItKeepStringOrder() {
29+
String str1 = removeDuplicateFromString.removeDuplicatesUsinglinkedHashSet(STR1);
30+
String str2 = removeDuplicateFromString.removeDuplicatesUsinglinkedHashSet(STR2);
31+
Assert.assertEquals("race", str1);
32+
Assert.assertEquals("J2e progamin", str2);
33+
}
34+
35+
@Test
36+
public void whenUsingSorting_DuplicatesShouldBeRemovedWithoutKeepingStringOrder() {
37+
String str1 = removeDuplicateFromString.removeDuplicatesUsingSorting(STR1);
38+
String str2 = removeDuplicateFromString.removeDuplicatesUsingSorting(STR2);
39+
Assert.assertEquals("acer", str1);
40+
Assert.assertEquals(" 2Jaegimnopr", str2);
41+
}
42+
43+
@Test
44+
public void whenUsingHashSet_DuplicatesShouldBeRemovedWithoutKeepingStringOrder() {
45+
String str1 = removeDuplicateFromString.removeDuplicatesUsingHashSet(STR1);
46+
String str2 = removeDuplicateFromString.removeDuplicatesUsingHashSet(STR2);
47+
Assert.assertEquals("arce", str1);
48+
Assert.assertEquals(" pa2regiJmno", str2);
49+
}
50+
51+
@Test
52+
public void whenUsingIndexOf_DuplicatesShouldBeRemovedWithoutKeepingStringOrder() {
53+
String str1 = removeDuplicateFromString.removeDuplicatesUsingIndexOf(STR1);
54+
String str2 = removeDuplicateFromString.removeDuplicatesUsingIndexOf(STR2);
55+
Assert.assertEquals("ecar", str1);
56+
Assert.assertEquals("J2e poraming", str2);
57+
}
58+
}

0 commit comments

Comments
 (0)