From 3f86e24b89e5418eab7ee4cb94a8c6a22a0edadf Mon Sep 17 00:00:00 2001 From: Tommi Reiman Date: Wed, 9 Jan 2019 08:04:30 +0200 Subject: [PATCH] faster split --- modules/reitit-core/java-src/reitit/Trie.java | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/modules/reitit-core/java-src/reitit/Trie.java b/modules/reitit-core/java-src/reitit/Trie.java index 2a0219fe..88186d2b 100644 --- a/modules/reitit-core/java-src/reitit/Trie.java +++ b/modules/reitit-core/java-src/reitit/Trie.java @@ -8,6 +8,21 @@ import static java.util.Arrays.asList; public class Trie { + public static ArrayList split(final String path) { + final ArrayList segments = new ArrayList<>(4); + final int size = path.length(); + int start = 1; + for (int i = start; i < size; i++) { + final char c = path.charAt(i); + if (c == '/') { + segments.add(path.substring(start, i)); + start = i + 1; + } + } + segments.add(path.substring(start, size)); + return segments; + } + public static class Match { public Map params = new HashMap<>(); public Object data; @@ -112,10 +127,6 @@ public class Trie { return this; } - public static List split(String path) { - ArrayList strings = new ArrayList<>(asList(path.split("/"))); - strings.remove(0); - return strings; } public static void main(String[] args) {