From 2b125d2689baf7550990bad3490d367fb1d130cd Mon Sep 17 00:00:00 2001 From: robert-bor Date: Wed, 27 Aug 2014 08:42:46 +0200 Subject: [PATCH] Issue #10 make sure that State emits a specific match only once --- src/main/java/org/ahocorasick/trie/State.java | 4 ++-- src/test/java/org/ahocorasick/trie/TrieTest.java | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/main/java/org/ahocorasick/trie/State.java b/src/main/java/org/ahocorasick/trie/State.java index 9108838..1173fe9 100644 --- a/src/main/java/org/ahocorasick/trie/State.java +++ b/src/main/java/org/ahocorasick/trie/State.java @@ -41,7 +41,7 @@ public class State { private State failure = null; /** whenever this state is reached, it will emit the matches keywords for future reference */ - private List emits = null; + private Set emits = null; public State() { this(0); @@ -83,7 +83,7 @@ public class State { public void addEmit(String keyword) { if (this.emits == null) { - this.emits = new ArrayList(); + this.emits = new TreeSet<>(); } this.emits.add(keyword); } diff --git a/src/test/java/org/ahocorasick/trie/TrieTest.java b/src/test/java/org/ahocorasick/trie/TrieTest.java index 5627376..6cc7ff7 100644 --- a/src/test/java/org/ahocorasick/trie/TrieTest.java +++ b/src/test/java/org/ahocorasick/trie/TrieTest.java @@ -48,8 +48,8 @@ public class TrieTest { Collection emits = trie.parseText("ushers"); assertEquals(3, emits.size()); // she @ 3, he @ 3, hers @ 5 Iterator iterator = emits.iterator(); - checkEmit(iterator.next(), 1, 3, "she"); checkEmit(iterator.next(), 2, 3, "he"); + checkEmit(iterator.next(), 1, 3, "she"); checkEmit(iterator.next(), 2, 5, "hers"); } @@ -87,10 +87,10 @@ public class TrieTest { checkEmit(iterator.next(), 0, 1, "he"); checkEmit(iterator.next(), 2, 3, "he"); checkEmit(iterator.next(), 4, 5, "he"); - checkEmit(iterator.next(), 0, 7, "hehehehe"); checkEmit(iterator.next(), 6, 7, "he"); - checkEmit(iterator.next(), 2, 9, "hehehehe"); + checkEmit(iterator.next(), 0, 7, "hehehehe"); checkEmit(iterator.next(), 8, 9, "he"); + checkEmit(iterator.next(), 2, 9, "hehehehe"); } @Test