Merge pull request #7572 from cscib/BAEL-3083

Example added for BAEL-3083
This commit is contained in:
Erik Pragt
2019-10-12 23:44:42 +11:00
committed by GitHub
2 changed files with 134 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
package com.baeldung.findastring;
import com.google.common.base.Predicates;
import com.google.common.collect.Iterables;
import com.google.common.collect.Lists;
import org.apache.commons.collections4.IterableUtils;
import org.apache.commons.collections4.IteratorUtils;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;
import java.util.stream.Collectors;
public class FindAStringInGivenList {
public List<String> findUsingLoopWithRegex(String search, List<String> list) {
List<String> matches = new ArrayList<String>();
String pattern = ".*"+search+".*";
Pattern p = Pattern.compile(pattern);
for(String str: list) {
if (p.matcher(str).matches()) {
matches.add(str);
}
}
return matches;
}
public List<String> findUsingLoop(String search, List<String> list) {
List<String> matches = new ArrayList<String>();
for(String str: list) {
if (str.contains(search)) {
matches.add(str);
}
}
return matches;
}
public List<String> findUsingStream(String search, List<String> list) {
List<String> matchingElements =
list.stream()
.filter(str -> str.trim().contains(search))
.collect(Collectors.toList());
return matchingElements;
}
public List<String> findUsingGuava(String search, List<String> list) {
Iterable<String> result = Iterables.filter(list, Predicates.containsPattern(search));
return Lists.newArrayList(result.iterator());
}
public List<String> findUsingCommonsCollection(String search, List<String> list) {
Iterable<String> result = IterableUtils.filteredIterable(list, new org.apache.commons.collections4.Predicate<String>() {
public boolean evaluate(String listElement) {
return listElement.contains(search);
}
});
return IteratorUtils.toList(result.iterator());
}
}

View File

@@ -0,0 +1,62 @@
package com.baeldung.findastring;
import java.util.ArrayList;
import java.util.List;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.Test;
public class FindAStringInListUnitTest {
private static List<String> list = new ArrayList<>();
static {
list.add("Jack and Jill");
list.add("James and Sarah");
list.add("Sam and Louise");
list.add("Jack");
list.add("");
}
private static FindAStringInGivenList findAStringInGivenList = new FindAStringInGivenList();
@Test
public void givenAString_whenFoundUsingLoopWithRegex_thenReturnList() {
List matchingElements = findAStringInGivenList.findUsingLoopWithRegex("Jack", list);
assertEquals(2, matchingElements.size());
assertEquals("Jack and Jill", matchingElements.get(0));
assertEquals("Jack", matchingElements.get(1));
}
@Test
public void givenAString_whenFoundUsingLoop_thenReturnList() {
List matchingElements = findAStringInGivenList.findUsingLoop("Jack", list);
assertEquals(2, matchingElements.size());
assertEquals("Jack and Jill", matchingElements.get(0));
assertEquals("Jack", matchingElements.get(1));
}
@Test
public void givenAString_whenFoundUsingStream_thenReturnList(){
List matchingElements = findAStringInGivenList.findUsingStream("Jack", list);
assertEquals(2, matchingElements.size());
assertEquals("Jack and Jill", matchingElements.get(0));
assertEquals("Jack", matchingElements.get(1));
}
@Test
public void givenAString_whenFoundUsingCommonsCollection_thenReturnList(){
List matchingElements = findAStringInGivenList.findUsingCommonsCollection("Jack", list);
assertEquals(2, matchingElements.size());
assertEquals("Jack and Jill", matchingElements.get(0));
assertEquals("Jack", matchingElements.get(1));
}
@Test
public void givenAString_whenFoundUsingGuava_thenReturnList(){
List matchingElements = findAStringInGivenList.findUsingGuava("Jack", list);
assertEquals(2, matchingElements.size());
assertEquals("Jack and Jill", matchingElements.get(0));
assertEquals("Jack", matchingElements.get(1));
}
}