From 06ffe3b5e42581d28e582d68ebf35f2403789954 Mon Sep 17 00:00:00 2001 From: mherbaghinyan Date: Sun, 13 Jan 2019 11:04:42 +0400 Subject: [PATCH] match words final refactor --- .../main/java/com/baeldung/string/MatchWords.java | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/java-strings/src/main/java/com/baeldung/string/MatchWords.java b/java-strings/src/main/java/com/baeldung/string/MatchWords.java index f4a52ae308..675f4577c3 100644 --- a/java-strings/src/main/java/com/baeldung/string/MatchWords.java +++ b/java-strings/src/main/java/com/baeldung/string/MatchWords.java @@ -4,7 +4,10 @@ import org.ahocorasick.trie.Emit; import org.ahocorasick.trie.Trie; import java.util.*; +import java.util.function.Function; import java.util.regex.Pattern; +import java.util.stream.Collectors; +import java.util.stream.Stream; public class MatchWords { @@ -51,14 +54,17 @@ public class MatchWords { .onlyWholeWords() .addKeyword(words[0]) .addKeyword(words[1]) + .ignoreOverlaps() .build(); - Collection emits = trie.parseText(inputString); - + Collection emits = trie.parseText(inputString) + .stream() + .filter(e -> !Objects.equals(e.getKeyword(), e.getKeyword())) + .collect(Collectors.toList()); return emits.size() == words.length; } private static boolean containsWordsPatternMatch(String inputString, String[] words) { - Pattern pattern = Pattern.compile("(?=.*words[0])(?=.*words[1])"); + Pattern pattern = Pattern.compile("(?=.*hello)(?=.*Baeldung)"); if (pattern.matcher(inputString).find()) { return true; }