From ae2b60ff8080769fc76bba439345e37c7c7604dd Mon Sep 17 00:00:00 2001 From: caroline Date: Wed, 14 Aug 2019 09:35:46 +0200 Subject: [PATCH 1/6] Example added for BAEL-3083 --- .../findastring/FindAStringInGivenList.java | 79 ++++++++++++++++ .../FindAStringInListUnitTest.java | 93 +++++++++++++++++++ 2 files changed, 172 insertions(+) create mode 100644 core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java create mode 100644 core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/findastring/FindAStringInListUnitTest.java diff --git a/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java b/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java new file mode 100644 index 0000000000..c63a50e084 --- /dev/null +++ b/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java @@ -0,0 +1,79 @@ +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.CollectionUtils; +import org.apache.commons.collections4.IterableUtils; +import org.apache.commons.collections4.IteratorUtils; +import org.apache.commons.collections4.PredicateUtils; +import org.apache.commons.lang3.StringUtils; +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Pattern; +import java.util.stream.Collectors; + +public class FindAStringInGivenList { + + + public List findUsingLoopWithRegex(String search, List list) { + + List matches = new ArrayList(); + + String pattern = ".*\\b"+search+"\\b.*"; + Pattern p = Pattern.compile(pattern); + + for(String str: list) { + if (p.matcher(str).matches()) { + matches.add(str); + } + } + + return matches; + } + + + public List findUsingLoop(String search, List list) { + + List matches = new ArrayList(); + + for(String str: list) { + if (search != null && str.contains(search)) { + matches.add(str); + } + } + + return matches; + } + + public List findUsingStream(String search, List list) { + + List matchingElements = + list.stream() + .filter(str -> search != null) + .filter(str -> str.trim().contains(search)) + .collect(Collectors.toList()); + + return matchingElements; + } + + public List findUsingGuava(String search, List list) { + if (search == null) return Lists.newArrayList(); + + Iterable result = Iterables.filter(Iterables.filter(list,Predicates.notNull()), Predicates.containsPattern(search)); + + return Lists.newArrayList(result.iterator()); + } + + public List findUsingApacheCommon(String search, List list) { + CollectionUtils.filter(list, PredicateUtils.notNullPredicate()); + Iterable result = IterableUtils.filteredIterable(list, new org.apache.commons.collections4.Predicate() { + public boolean evaluate(String listElement) { + return search != null && StringUtils.isNotEmpty(listElement) ? listElement.contains(search) : false; + } + }); + + return IteratorUtils.toList(result.iterator()); + } + +} \ No newline at end of file diff --git a/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/findastring/FindAStringInListUnitTest.java b/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/findastring/FindAStringInListUnitTest.java new file mode 100644 index 0000000000..bc2fbb0000 --- /dev/null +++ b/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/findastring/FindAStringInListUnitTest.java @@ -0,0 +1,93 @@ +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 list = new ArrayList<>(); + + static { + list.add("Jack and Jill"); + list.add("James and Sarah"); + list.add("Sam and Louise"); + list.add("Jack"); + list.add(null); + 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_whenNullFoundUsingLoopWithRegex_thenReturnEmptyList(){ + List matchingElements = findAStringInGivenList.findUsingLoopWithRegex(null, list); + assertEquals(0, matchingElements.size()); + } + + @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_whenNullFoundUsingLoop_thenReturnEmptyList(){ + List matchingElements = findAStringInGivenList.findUsingLoop(null, list); + assertEquals(0, matchingElements.size()); + } + + + @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_whenNullFoundUsingStream_thenReturnEmptyList(){ + List matchingElements = findAStringInGivenList.findUsingStream(null, list); + assertEquals(0, matchingElements.size()); + } + + @Test + public void givenAString_whenFoundUsingApacheCommons_thenReturnList(){ + List matchingElements = findAStringInGivenList.findUsingApacheCommon("Jack", list); + assertEquals(2, matchingElements.size()); + assertEquals("Jack and Jill", matchingElements.get(0)); + assertEquals("Jack", matchingElements.get(1)); + } + + @Test + public void givenAString_whenNullFoundUsingApacheCommons_thenReturnEmptyList(){ + List matchingElements = findAStringInGivenList.findUsingApacheCommon(null, list); + assertEquals(0, matchingElements.size()); + } + + @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)); + } + + @Test + public void givenAString_whenNullFoundUsingGuava_thenReturnEmptyList(){ + List matchingElements = findAStringInGivenList.findUsingGuava(null, list); + assertEquals(0, matchingElements.size()); + } + +} From 7a77f060bebbbe9f2e953d1d1f371866bff1246c Mon Sep 17 00:00:00 2001 From: caroline Date: Fri, 30 Aug 2019 16:07:18 +0200 Subject: [PATCH 2/6] Small change for BAEL-3083 --- .../java/com/baeldung/findastring/FindAStringInGivenList.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java b/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java index c63a50e084..2b7c9feb11 100644 --- a/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java +++ b/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java @@ -58,7 +58,9 @@ public class FindAStringInGivenList { } public List findUsingGuava(String search, List list) { - if (search == null) return Lists.newArrayList(); + if (search == null) { + return Lists.newArrayList(); + } Iterable result = Iterables.filter(Iterables.filter(list,Predicates.notNull()), Predicates.containsPattern(search)); From e479bea0b88012b4830f4206a6956cd137243ba6 Mon Sep 17 00:00:00 2001 From: caroline Date: Tue, 10 Sep 2019 14:40:07 +0200 Subject: [PATCH 3/6] Minor changes to class names and return type List for BAEL-3083 --- .../com/baeldung/findastring/FindAStringInGivenList.java | 8 ++++---- .../baeldung/findastring/FindAStringInListUnitTest.java | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java b/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java index 2b7c9feb11..bfc666b36d 100644 --- a/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java +++ b/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java @@ -16,7 +16,7 @@ import java.util.stream.Collectors; public class FindAStringInGivenList { - public List findUsingLoopWithRegex(String search, List list) { + public List findUsingLoopWithRegex(String search, List list) { List matches = new ArrayList(); @@ -33,7 +33,7 @@ public class FindAStringInGivenList { } - public List findUsingLoop(String search, List list) { + public List findUsingLoop(String search, List list) { List matches = new ArrayList(); @@ -46,7 +46,7 @@ public class FindAStringInGivenList { return matches; } - public List findUsingStream(String search, List list) { + public List findUsingStream(String search, List list) { List matchingElements = list.stream() @@ -67,7 +67,7 @@ public class FindAStringInGivenList { return Lists.newArrayList(result.iterator()); } - public List findUsingApacheCommon(String search, List list) { + public List findUsingCommonsCollection(String search, List list) { CollectionUtils.filter(list, PredicateUtils.notNullPredicate()); Iterable result = IterableUtils.filteredIterable(list, new org.apache.commons.collections4.Predicate() { public boolean evaluate(String listElement) { diff --git a/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/findastring/FindAStringInListUnitTest.java b/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/findastring/FindAStringInListUnitTest.java index bc2fbb0000..ee293034c9 100644 --- a/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/findastring/FindAStringInListUnitTest.java +++ b/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/findastring/FindAStringInListUnitTest.java @@ -63,16 +63,16 @@ public class FindAStringInListUnitTest { } @Test - public void givenAString_whenFoundUsingApacheCommons_thenReturnList(){ - List matchingElements = findAStringInGivenList.findUsingApacheCommon("Jack", list); + 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_whenNullFoundUsingApacheCommons_thenReturnEmptyList(){ - List matchingElements = findAStringInGivenList.findUsingApacheCommon(null, list); + public void givenAString_whenNullFoundUsingCommonsCollection_thenReturnEmptyList(){ + List matchingElements = findAStringInGivenList.findUsingCommonsCollection(null, list); assertEquals(0, matchingElements.size()); } From 48cc9a440938d81d26012c0244ee4beb8c3cab26 Mon Sep 17 00:00:00 2001 From: caroline Date: Mon, 23 Sep 2019 14:44:51 +0200 Subject: [PATCH 4/6] Removing null checks as suggested by editor for BAEL-3083 --- .../findastring/FindAStringInGivenList.java | 14 ++------- .../FindAStringInListUnitTest.java | 31 ------------------- 2 files changed, 3 insertions(+), 42 deletions(-) diff --git a/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java b/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java index bfc666b36d..7324ad0492 100644 --- a/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java +++ b/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java @@ -3,11 +3,8 @@ 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.CollectionUtils; import org.apache.commons.collections4.IterableUtils; import org.apache.commons.collections4.IteratorUtils; -import org.apache.commons.collections4.PredicateUtils; -import org.apache.commons.lang3.StringUtils; import java.util.ArrayList; import java.util.List; import java.util.regex.Pattern; @@ -38,7 +35,7 @@ public class FindAStringInGivenList { List matches = new ArrayList(); for(String str: list) { - if (search != null && str.contains(search)) { + if (str.contains(search)) { matches.add(str); } } @@ -58,20 +55,15 @@ public class FindAStringInGivenList { } public List findUsingGuava(String search, List list) { - if (search == null) { - return Lists.newArrayList(); - } - - Iterable result = Iterables.filter(Iterables.filter(list,Predicates.notNull()), Predicates.containsPattern(search)); + Iterable result = Iterables.filter(list, Predicates.containsPattern(search)); return Lists.newArrayList(result.iterator()); } public List findUsingCommonsCollection(String search, List list) { - CollectionUtils.filter(list, PredicateUtils.notNullPredicate()); Iterable result = IterableUtils.filteredIterable(list, new org.apache.commons.collections4.Predicate() { public boolean evaluate(String listElement) { - return search != null && StringUtils.isNotEmpty(listElement) ? listElement.contains(search) : false; + return listElement.contains(search); } }); diff --git a/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/findastring/FindAStringInListUnitTest.java b/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/findastring/FindAStringInListUnitTest.java index ee293034c9..ff5ca21505 100644 --- a/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/findastring/FindAStringInListUnitTest.java +++ b/core-java-modules/core-java-collections-list-2/src/test/java/com/baeldung/findastring/FindAStringInListUnitTest.java @@ -13,7 +13,6 @@ public class FindAStringInListUnitTest { list.add("James and Sarah"); list.add("Sam and Louise"); list.add("Jack"); - list.add(null); list.add(""); } @@ -27,12 +26,6 @@ public class FindAStringInListUnitTest { assertEquals("Jack", matchingElements.get(1)); } - @Test - public void givenAString_whenNullFoundUsingLoopWithRegex_thenReturnEmptyList(){ - List matchingElements = findAStringInGivenList.findUsingLoopWithRegex(null, list); - assertEquals(0, matchingElements.size()); - } - @Test public void givenAString_whenFoundUsingLoop_thenReturnList() { List matchingElements = findAStringInGivenList.findUsingLoop("Jack", list); @@ -41,12 +34,6 @@ public class FindAStringInListUnitTest { assertEquals("Jack", matchingElements.get(1)); } - @Test - public void givenAString_whenNullFoundUsingLoop_thenReturnEmptyList(){ - List matchingElements = findAStringInGivenList.findUsingLoop(null, list); - assertEquals(0, matchingElements.size()); - } - @Test public void givenAString_whenFoundUsingStream_thenReturnList(){ @@ -56,12 +43,6 @@ public class FindAStringInListUnitTest { assertEquals("Jack", matchingElements.get(1)); } - @Test - public void givenAString_whenNullFoundUsingStream_thenReturnEmptyList(){ - List matchingElements = findAStringInGivenList.findUsingStream(null, list); - assertEquals(0, matchingElements.size()); - } - @Test public void givenAString_whenFoundUsingCommonsCollection_thenReturnList(){ List matchingElements = findAStringInGivenList.findUsingCommonsCollection("Jack", list); @@ -70,12 +51,6 @@ public class FindAStringInListUnitTest { assertEquals("Jack", matchingElements.get(1)); } - @Test - public void givenAString_whenNullFoundUsingCommonsCollection_thenReturnEmptyList(){ - List matchingElements = findAStringInGivenList.findUsingCommonsCollection(null, list); - assertEquals(0, matchingElements.size()); - } - @Test public void givenAString_whenFoundUsingGuava_thenReturnList(){ List matchingElements = findAStringInGivenList.findUsingGuava("Jack", list); @@ -84,10 +59,4 @@ public class FindAStringInListUnitTest { assertEquals("Jack", matchingElements.get(1)); } - @Test - public void givenAString_whenNullFoundUsingGuava_thenReturnEmptyList(){ - List matchingElements = findAStringInGivenList.findUsingGuava(null, list); - assertEquals(0, matchingElements.size()); - } - } From b27a5ae4cdb6f2d136b6ed833d82313b145134a7 Mon Sep 17 00:00:00 2001 From: caroline Date: Tue, 24 Sep 2019 15:05:06 +0200 Subject: [PATCH 5/6] Removing null checks as suggested by editor for BAEL-3083 --- .../java/com/baeldung/findastring/FindAStringInGivenList.java | 1 - 1 file changed, 1 deletion(-) diff --git a/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java b/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java index 7324ad0492..816b87dc86 100644 --- a/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java +++ b/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java @@ -47,7 +47,6 @@ public class FindAStringInGivenList { List matchingElements = list.stream() - .filter(str -> search != null) .filter(str -> str.trim().contains(search)) .collect(Collectors.toList()); From c7174343bf9f3d51fdff589bd08170671ed73b71 Mon Sep 17 00:00:00 2001 From: caroline Date: Thu, 3 Oct 2019 22:52:34 +0200 Subject: [PATCH 6/6] Removing null checks as suggested by editor for BAEL-3083 --- .../java/com/baeldung/findastring/FindAStringInGivenList.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java b/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java index 816b87dc86..67c62fe009 100644 --- a/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java +++ b/core-java-modules/core-java-collections-list-2/src/main/java/com/baeldung/findastring/FindAStringInGivenList.java @@ -17,7 +17,7 @@ public class FindAStringInGivenList { List matches = new ArrayList(); - String pattern = ".*\\b"+search+"\\b.*"; + String pattern = ".*"+search+".*"; Pattern p = Pattern.compile(pattern); for(String str: list) {