From 4a4f4b2f2a4ffc0bbb145b6a6e6d55a7972e7cfd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=CC=88rg=20Prante?= Date: Sat, 22 Oct 2022 13:44:03 +0200 Subject: [PATCH] string segment optimization --- .../trie/segment/PatternSegment.java | 30 +++++++++++++++++++ .../datastructures/trie/segment/TrieTest.java | 5 ++-- 2 files changed, 32 insertions(+), 3 deletions(-) create mode 100644 datastructures-trie/src/main/java/org/xbib/datastructures/trie/segment/PatternSegment.java diff --git a/datastructures-trie/src/main/java/org/xbib/datastructures/trie/segment/PatternSegment.java b/datastructures-trie/src/main/java/org/xbib/datastructures/trie/segment/PatternSegment.java new file mode 100644 index 0000000..426be0d --- /dev/null +++ b/datastructures-trie/src/main/java/org/xbib/datastructures/trie/segment/PatternSegment.java @@ -0,0 +1,30 @@ +package org.xbib.datastructures.trie.segment; + +import java.util.regex.Pattern; + +public class PatternSegment implements TrieKeySegment { + + private final Pattern segment; + + public PatternSegment(Pattern segment) { + this.segment = segment; + } + + public Pattern getSegment() { + return segment; + } + + public static PatternSegment of(Pattern segment) { + return new PatternSegment(segment); + } + + @Override + public int compareTo(Pattern o) { + return segment.pattern().compareTo(o.pattern()); + } + + @Override + public String toString() { + return segment.pattern(); + } +} diff --git a/datastructures-trie/src/test/java/org/xbib/datastructures/trie/segment/TrieTest.java b/datastructures-trie/src/test/java/org/xbib/datastructures/trie/segment/TrieTest.java index 48f4199..eff6ea9 100644 --- a/datastructures-trie/src/test/java/org/xbib/datastructures/trie/segment/TrieTest.java +++ b/datastructures-trie/src/test/java/org/xbib/datastructures/trie/segment/TrieTest.java @@ -43,13 +43,12 @@ public class TrieTest { @Test public void testLargeInsertionAndSearch() { + Random random = new Random(); Trie, Long> trie = new TrieImpl<>(); List> keys = new ArrayList<>(); for (int i = 0; i < 10000; i++) { - Random random = new Random(); Long value = random.nextLong(); - String key = value.toString(); - TrieKey trieKey = TrieKeyImpl.stringKey(key); + TrieKey trieKey = TrieKeyImpl.stringKey(value.toString()); trie.put(trieKey, value); keys.add(trieKey); }