void put( StringBuffer remainder, StringBuffer prefix, V value ) { if( remainder.length() <= 0 ) { this.entry.value = value; this.entry.prefix = prefix.toString(); return; } char keyElement = remainder.charAt( 0 ); Trie<V> trie = null; try { trie = children.get( keyElement ); } catch( IndexOutOfBoundsException ignored ) { } if( trie == null ) { trie = new Trie<>( keyElement ); children.put( keyElement, trie ); } prefix.append( remainder.charAt( 0 ) ); trie.put( remainder.deleteCharAt( 0 ), prefix, value ); }
protected Trie<Child> getTapPrefixMap( FlowProcess<? extends Config> flowProcess ) { if( prefixMap != null ) return prefixMap; prefixMap = new Trie<>(); for( Child tap : taps ) prefixMap.put( tap.getFullIdentifier( flowProcess ), tap ); return prefixMap; }
@Test public void testGetCommonPrefixNone() { Trie<String> trie = new Trie<>(); trie.put( "a", "a" ); trie.put( "b", "a" ); trie.put( "c", "a" ); trie.put( "e", "a" ); trie.put( "f", "a" ); assertEquals( "", trie.getCommonPrefix() ); } }
@Test public void testGetCommonPrefix() { Trie<String> trie = new Trie<>(); trie.put( "a", "a" ); trie.put( "aa", "aa" ); trie.put( "aaa", "aaa" ); trie.put( "aabb", "aabb" ); trie.put( "aaabb", "aaabb" ); trie.put( "aacbb", "aacbb" ); assertEquals( "aa", trie.getCommonPrefix() ); }
@Test public void testHasPrefix() { Trie<String> trie = new Trie<>(); trie.put( "a", "a" ); trie.put( "aa", "aa" ); trie.put( "aaa", "aaa" ); trie.put( "ab", "ab" ); trie.put( "abb", "abb" ); trie.put( "aabb", "aabb" ); assertTrue( trie.hasPrefix( "a" ) ); assertTrue( trie.hasPrefix( "aa" ) ); assertTrue( trie.hasPrefix( "aaa" ) ); assertFalse( trie.hasPrefix( "" ) ); assertFalse( trie.hasPrefix( "5" ) ); assertFalse( trie.hasPrefix( "zzzz" ) ); }
@Test public void testGetPrefix() { Trie<String> trie = new Trie<>(); trie.put( "a", "a" ); trie.put( "aa", "aa" ); trie.put( "aaa", "aaa" ); trie.put( "ab", "ab" ); trie.put( "abb", "abb" ); trie.put( "aabb", "aabb" ); assertEquals( null, trie.get( "" ) ); assertEquals( "a", trie.get( "a" ) ); assertEquals( "a", trie.get( "azzz" ) ); assertEquals( "aa", trie.get( "aa" ) ); assertEquals( "aaa", trie.get( "aaa" ) ); assertEquals( "ab", trie.get( "ab" ) ); assertEquals( "abb", trie.get( "abb" ) ); assertEquals( "aabb", trie.get( "aabb" ) ); assertEquals( "aabb", trie.get( "aabbcdef" ) ); assertNull( trie.get( "zzz" ) ); assertNull( trie.get( "" ) ); }