blob: ec33fad8e5e89838e00b7ff8778321285483f8ca [file] [log] [blame]
<!DOCTYPE HTML>
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (11.0.10) on Fri Feb 26 09:50:23 CST 2021 -->
<title>ArrayTernaryTrie (Jetty :: Project 9.4.38.v20210224 API)</title>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<meta name="dc.created" content="2021-02-26">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<link rel="stylesheet" type="text/css" href="../../../../jquery/jquery-ui.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip/dist/jszip.min.js"></script>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils.min.js"></script>
<!--[if IE]>
<script type="text/javascript" src="../../../../jquery/jszip-utils/dist/jszip-utils-ie.min.js"></script>
<![endif]-->
<script type="text/javascript" src="../../../../jquery/jquery-3.5.1.js"></script>
<script type="text/javascript" src="../../../../jquery/jquery-ui.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="ArrayTernaryTrie (Jetty :: Project 9.4.38.v20210224 API)";
}
}
catch(err) {
}
//-->
var data = {"i0":10,"i1":10,"i2":10,"i3":10,"i4":10,"i5":10,"i6":10,"i7":10,"i8":10,"i9":9,"i10":10,"i11":10,"i12":10,"i13":10,"i14":10,"i15":10};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],2:["t2","Instance Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
var pathtoroot = "../../../../";
var useModuleDirectories = false;
loadScripts(document, 'script');</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<header role="banner">
<nav role="navigation">
<div class="fixedNav">
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a id="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/ArrayTernaryTrie.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<ul class="navListSearch">
<li><label for="search">SEARCH:</label>
<input type="text" id="search" value="search" disabled="disabled">
<input type="reset" id="reset" value="reset" disabled="disabled">
</li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
</div>
<div class="navPadding">&nbsp;</div>
<script type="text/javascript"><!--
$('.navPadding').css('padding-top', $('.fixedNav').css("height"));
//-->
</script>
</nav>
</header>
<!-- ======== START OF CLASS DATA ======== -->
<main role="main">
<div class="header">
<div class="subTitle"><span class="packageLabelInType">Package</span>&nbsp;<a href="package-summary.html">org.eclipse.jetty.util</a></div>
<h2 title="Class ArrayTernaryTrie" class="title">Class ArrayTernaryTrie&lt;V&gt;</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li>java.lang.Object</li>
<li>
<ul class="inheritance">
<li><a href="AbstractTrie.html" title="class in org.eclipse.jetty.util">org.eclipse.jetty.util.AbstractTrie</a>&lt;V&gt;</li>
<li>
<ul class="inheritance">
<li>org.eclipse.jetty.util.ArrayTernaryTrie&lt;V&gt;</li>
</ul>
</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<dl>
<dt><span class="paramLabel">Type Parameters:</span></dt>
<dd><code>V</code> - the Entry type</dd>
</dl>
<dl>
<dt>All Implemented Interfaces:</dt>
<dd><code><a href="Trie.html" title="interface in org.eclipse.jetty.util">Trie</a>&lt;V&gt;</code></dd>
</dl>
<hr>
<pre>public class <span class="typeNameLabel">ArrayTernaryTrie&lt;V&gt;</span>
extends <a href="AbstractTrie.html" title="class in org.eclipse.jetty.util">AbstractTrie</a>&lt;V&gt;</pre>
<div class="block"><p>A Ternary Trie String lookup data structure.</p>
<p>
This Trie is of a fixed size and cannot grow (which can be a good thing with regards to DOS when used as a cache).
</p>
<p>
The Trie is stored in 3 arrays:
</p>
<dl>
<dt>char[] _tree</dt><dd>This is semantically 2 dimensional array flattened into a 1 dimensional char array. The second dimension
is that every 4 sequential elements represents a row of: character; hi index; eq index; low index, used to build a
ternary trie of key strings.</dd>
<dt>String[] _key</dt><dd>An array of key values where each element matches a row in the _tree array. A non zero key element
indicates that the _tree row is a complete key rather than an intermediate character of a longer key.</dd>
<dt>V[] _value</dt><dd>An array of values corresponding to the _key array</dd>
</dl>
<p>The lookup of a value will iterate through the _tree array matching characters. If the equal tree branch is followed,
then the _key array is looked up to see if this is a complete match. If a match is found then the _value array is looked up
to return the matching value.
</p>
<p>
This Trie may be instantiated either as case sensitive or insensitive.
</p>
<p>This Trie is not Threadsafe and contains no mutual exclusion
or deliberate memory barriers. It is intended for an ArrayTrie to be
built by a single thread and then used concurrently by multiple threads
and not mutated during that access. If concurrent mutations of the
Trie is required external locks need to be applied.
</p></div>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== NESTED CLASS SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="nested.class.summary">
<!-- -->
</a>
<h3>Nested Class Summary</h3>
<table class="memberSummary">
<caption><span>Nested Classes</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Class</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<td class="colFirst"><code>static class&nbsp;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="ArrayTernaryTrie.Growing.html" title="class in org.eclipse.jetty.util">ArrayTernaryTrie.Growing</a>&lt;<a href="ArrayTernaryTrie.Growing.html" title="type parameter in ArrayTernaryTrie.Growing">V</a>&gt;</span></code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colFirst" scope="col">Constructor</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E()">ArrayTernaryTrie</a></span>()</code></th>
<td class="colLast">
<div class="block">Create a case insensitive Trie of default capacity.</div>
</td>
</tr>
<tr class="rowColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(boolean)">ArrayTernaryTrie</a></span>&#8203;(boolean&nbsp;insensitive)</code></th>
<td class="colLast">
<div class="block">Create a Trie of default capacity</div>
</td>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(boolean,int)">ArrayTernaryTrie</a></span>&#8203;(boolean&nbsp;insensitive,
int&nbsp;capacity)</code></th>
<td class="colLast">
<div class="block">Create a Trie</div>
</td>
</tr>
<tr class="rowColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(int)">ArrayTernaryTrie</a></span>&#8203;(int&nbsp;capacity)</code></th>
<td class="colLast">
<div class="block">Create a case insensitive Trie</div>
</td>
</tr>
<tr class="altColor">
<th class="colConstructorName" scope="row"><code><span class="memberNameLink"><a href="#%3Cinit%3E(org.eclipse.jetty.util.ArrayTernaryTrie,double)">ArrayTernaryTrie</a></span>&#8203;(<a href="ArrayTernaryTrie.html" title="class in org.eclipse.jetty.util">ArrayTernaryTrie</a>&lt;<a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a>&gt;&nbsp;trie,
double&nbsp;factor)</code></th>
<td class="colLast">
<div class="block">Copy Trie and change capacity by a factor</div>
</td>
</tr>
</table>
</li>
</ul>
</section>
<!-- ========== METHOD SUMMARY =========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t2" class="tableTab"><span><a href="javascript:show(2);">Instance Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colSecond" scope="col">Method</th>
<th class="colLast" scope="col">Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#clear()">clear</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>void</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#dump()">dump</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>java.util.Set&lt;java.util.Map.Entry&lt;java.lang.String,&#8203;<a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a>&gt;&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#entrySet()">entrySet</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code><a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#get(java.lang.String,int,int)">get</a></span>&#8203;(java.lang.String&nbsp;s,
int&nbsp;offset,
int&nbsp;len)</code></th>
<td class="colLast">
<div class="block">Get an exact match from a String key</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code><a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#get(java.nio.ByteBuffer,int,int)">get</a></span>&#8203;(java.nio.ByteBuffer&nbsp;b,
int&nbsp;offset,
int&nbsp;len)</code></th>
<td class="colLast">
<div class="block">Get an exact match from a segment of a ByteBuufer as key</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code><a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getBest(byte%5B%5D,int,int)">getBest</a></span>&#8203;(byte[]&nbsp;b,
int&nbsp;offset,
int&nbsp;len)</code></th>
<td class="colLast">
<div class="block">Get the best match from key in a byte array.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code><a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getBest(java.lang.String)">getBest</a></span>&#8203;(java.lang.String&nbsp;s)</code></th>
<td class="colLast">
<div class="block">Get the best match from key in a String.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code><a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getBest(java.lang.String,int,int)">getBest</a></span>&#8203;(java.lang.String&nbsp;s,
int&nbsp;offset,
int&nbsp;length)</code></th>
<td class="colLast">
<div class="block">Get the best match from key in a String.</div>
</td>
</tr>
<tr id="i8" class="altColor">
<td class="colFirst"><code><a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a></code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#getBest(java.nio.ByteBuffer,int,int)">getBest</a></span>&#8203;(java.nio.ByteBuffer&nbsp;b,
int&nbsp;offset,
int&nbsp;len)</code></th>
<td class="colLast">
<div class="block">Get the best match from key in a byte buffer.</div>
</td>
</tr>
<tr id="i9" class="rowColor">
<td class="colFirst"><code>static int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#hilo(int)">hilo</a></span>&#8203;(int&nbsp;diff)</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i10" class="altColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isEmpty()">isEmpty</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i11" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#isFull()">isFull</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i12" class="altColor">
<td class="colFirst"><code>java.util.Set&lt;java.lang.String&gt;</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#keySet()">keySet</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i13" class="rowColor">
<td class="colFirst"><code>boolean</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#put(java.lang.String,V)">put</a></span>&#8203;(java.lang.String&nbsp;s,
<a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a>&nbsp;v)</code></th>
<td class="colLast">
<div class="block">Put an entry into the Trie</div>
</td>
</tr>
<tr id="i14" class="altColor">
<td class="colFirst"><code>int</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#size()">size</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
<tr id="i15" class="rowColor">
<td class="colFirst"><code>java.lang.String</code></td>
<th class="colSecond" scope="row"><code><span class="memberNameLink"><a href="#toString()">toString</a></span>()</code></th>
<td class="colLast">&nbsp;</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.org.eclipse.jetty.util.AbstractTrie">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;org.eclipse.jetty.util.<a href="AbstractTrie.html" title="class in org.eclipse.jetty.util">AbstractTrie</a></h3>
<code><a href="AbstractTrie.html#get(java.lang.String)">get</a>, <a href="AbstractTrie.html#get(java.nio.ByteBuffer)">get</a>, <a href="AbstractTrie.html#isCaseInsensitive()">isCaseInsensitive</a>, <a href="AbstractTrie.html#put(V)">put</a>, <a href="AbstractTrie.html#remove(java.lang.String)">remove</a></code></li>
</ul>
<ul class="blockList">
<li class="blockList"><a id="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.Object</h3>
<code>clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait</code></li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a id="&lt;init&gt;()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ArrayTernaryTrie</h4>
<pre>public&nbsp;ArrayTernaryTrie()</pre>
<div class="block">Create a case insensitive Trie of default capacity.</div>
</li>
</ul>
<a id="&lt;init&gt;(boolean)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ArrayTernaryTrie</h4>
<pre>public&nbsp;ArrayTernaryTrie&#8203;(boolean&nbsp;insensitive)</pre>
<div class="block">Create a Trie of default capacity</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>insensitive</code> - true if the Trie is insensitive to the case of the key.</dd>
</dl>
</li>
</ul>
<a id="&lt;init&gt;(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ArrayTernaryTrie</h4>
<pre>public&nbsp;ArrayTernaryTrie&#8203;(int&nbsp;capacity)</pre>
<div class="block">Create a case insensitive Trie</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>capacity</code> - The capacity of the Trie, which is in the worst case
is the total number of characters of all keys stored in the Trie.
The capacity needed is dependent of the shared prefixes of the keys.
For example, a capacity of 6 nodes is required to store keys "foo"
and "bar", but a capacity of only 4 is required to
store "bar" and "bat".</dd>
</dl>
</li>
</ul>
<a id="&lt;init&gt;(boolean,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>ArrayTernaryTrie</h4>
<pre>public&nbsp;ArrayTernaryTrie&#8203;(boolean&nbsp;insensitive,
int&nbsp;capacity)</pre>
<div class="block">Create a Trie</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>insensitive</code> - true if the Trie is insensitive to the case of the key.</dd>
<dd><code>capacity</code> - The capacity of the Trie, which is in the worst case
is the total number of characters of all keys stored in the Trie.
The capacity needed is dependent of the shared prefixes of the keys.
For example, a capacity of 6 nodes is required to store keys "foo"
and "bar", but a capacity of only 4 is required to
store "bar" and "bat".</dd>
</dl>
</li>
</ul>
<a id="&lt;init&gt;(org.eclipse.jetty.util.ArrayTernaryTrie,double)">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>ArrayTernaryTrie</h4>
<pre>public&nbsp;ArrayTernaryTrie&#8203;(<a href="ArrayTernaryTrie.html" title="class in org.eclipse.jetty.util">ArrayTernaryTrie</a>&lt;<a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a>&gt;&nbsp;trie,
double&nbsp;factor)</pre>
<div class="block">Copy Trie and change capacity by a factor</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>trie</code> - the trie to copy from</dd>
<dd><code>factor</code> - the factor to grow the capacity by</dd>
</dl>
</li>
</ul>
</li>
</ul>
</section>
<!-- ============ METHOD DETAIL ========== -->
<section role="region">
<ul class="blockList">
<li class="blockList"><a id="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a id="clear()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>clear</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;clear()</pre>
</li>
</ul>
<a id="put(java.lang.String,java.lang.Object)">
<!-- -->
</a><a id="put(java.lang.String,V)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>put</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;put&#8203;(java.lang.String&nbsp;s,
<a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a>&nbsp;v)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="Trie.html#put(java.lang.String,V)">Trie</a></code></span></div>
<div class="block">Put an entry into the Trie</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - The key for the entry</dd>
<dd><code>v</code> - The value of the entry</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>True if the Trie had capacity to add the field.</dd>
</dl>
</li>
</ul>
<a id="get(java.lang.String,int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>get</h4>
<pre class="methodSignature">public&nbsp;<a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a>&nbsp;get&#8203;(java.lang.String&nbsp;s,
int&nbsp;offset,
int&nbsp;len)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="Trie.html#get(java.lang.String,int,int)">Trie</a></code></span></div>
<div class="block">Get an exact match from a String key</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - The key</dd>
<dd><code>offset</code> - The offset within the string of the key</dd>
<dd><code>len</code> - the length of the key</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the value for the string / offset / length</dd>
</dl>
</li>
</ul>
<a id="get(java.nio.ByteBuffer,int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>get</h4>
<pre class="methodSignature">public&nbsp;<a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a>&nbsp;get&#8203;(java.nio.ByteBuffer&nbsp;b,
int&nbsp;offset,
int&nbsp;len)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="Trie.html#get(java.nio.ByteBuffer,int,int)">Trie</a></code></span></div>
<div class="block">Get an exact match from a segment of a ByteBuufer as key</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>b</code> - The buffer</dd>
<dd><code>offset</code> - The offset within the buffer of the key</dd>
<dd><code>len</code> - the length of the key</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The value or null if not found</dd>
</dl>
</li>
</ul>
<a id="getBest(java.lang.String)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getBest</h4>
<pre class="methodSignature">public&nbsp;<a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a>&nbsp;getBest&#8203;(java.lang.String&nbsp;s)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="Trie.html#getBest(java.lang.String)">Trie</a></code></span></div>
<div class="block">Get the best match from key in a String.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="Trie.html#getBest(java.lang.String)">getBest</a></code>&nbsp;in interface&nbsp;<code><a href="Trie.html" title="interface in org.eclipse.jetty.util">Trie</a>&lt;<a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a>&gt;</code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="AbstractTrie.html#getBest(java.lang.String)">getBest</a></code>&nbsp;in class&nbsp;<code><a href="AbstractTrie.html" title="class in org.eclipse.jetty.util">AbstractTrie</a>&lt;<a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - The string</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The value or null if not found</dd>
</dl>
</li>
</ul>
<a id="getBest(java.lang.String,int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getBest</h4>
<pre class="methodSignature">public&nbsp;<a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a>&nbsp;getBest&#8203;(java.lang.String&nbsp;s,
int&nbsp;offset,
int&nbsp;length)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="Trie.html#getBest(java.lang.String,int,int)">Trie</a></code></span></div>
<div class="block">Get the best match from key in a String.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>s</code> - The string</dd>
<dd><code>offset</code> - The offset within the string of the key</dd>
<dd><code>length</code> - the length of the key</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The value or null if not found</dd>
</dl>
</li>
</ul>
<a id="getBest(java.nio.ByteBuffer,int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getBest</h4>
<pre class="methodSignature">public&nbsp;<a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a>&nbsp;getBest&#8203;(java.nio.ByteBuffer&nbsp;b,
int&nbsp;offset,
int&nbsp;len)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="Trie.html#getBest(java.nio.ByteBuffer,int,int)">Trie</a></code></span></div>
<div class="block">Get the best match from key in a byte buffer.
The key is assumed to by ISO_8859_1 characters.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>b</code> - The buffer</dd>
<dd><code>offset</code> - The offset within the buffer of the key</dd>
<dd><code>len</code> - the length of the key</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The value or null if not found</dd>
</dl>
</li>
</ul>
<a id="getBest(byte[],int,int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>getBest</h4>
<pre class="methodSignature">public&nbsp;<a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a>&nbsp;getBest&#8203;(byte[]&nbsp;b,
int&nbsp;offset,
int&nbsp;len)</pre>
<div class="block"><span class="descfrmTypeLabel">Description copied from interface:&nbsp;<code><a href="Trie.html#getBest(byte%5B%5D,int,int)">Trie</a></code></span></div>
<div class="block">Get the best match from key in a byte array.
The key is assumed to by ISO_8859_1 characters.</div>
<dl>
<dt><span class="overrideSpecifyLabel">Specified by:</span></dt>
<dd><code><a href="Trie.html#getBest(byte%5B%5D,int,int)">getBest</a></code>&nbsp;in interface&nbsp;<code><a href="Trie.html" title="interface in org.eclipse.jetty.util">Trie</a>&lt;<a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a>&gt;</code></dd>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code><a href="AbstractTrie.html#getBest(byte%5B%5D,int,int)">getBest</a></code>&nbsp;in class&nbsp;<code><a href="AbstractTrie.html" title="class in org.eclipse.jetty.util">AbstractTrie</a>&lt;<a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a>&gt;</code></dd>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>b</code> - The buffer</dd>
<dd><code>offset</code> - The offset within the array of the key</dd>
<dd><code>len</code> - the length of the key</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>The value or null if not found</dd>
</dl>
</li>
</ul>
<a id="toString()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>toString</h4>
<pre class="methodSignature">public&nbsp;java.lang.String&nbsp;toString()</pre>
<dl>
<dt><span class="overrideSpecifyLabel">Overrides:</span></dt>
<dd><code>toString</code>&nbsp;in class&nbsp;<code>java.lang.Object</code></dd>
</dl>
</li>
</ul>
<a id="keySet()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>keySet</h4>
<pre class="methodSignature">public&nbsp;java.util.Set&lt;java.lang.String&gt;&nbsp;keySet()</pre>
</li>
</ul>
<a id="size()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>size</h4>
<pre class="methodSignature">public&nbsp;int&nbsp;size()</pre>
</li>
</ul>
<a id="isEmpty()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isEmpty</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isEmpty()</pre>
</li>
</ul>
<a id="entrySet()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>entrySet</h4>
<pre class="methodSignature">public&nbsp;java.util.Set&lt;java.util.Map.Entry&lt;java.lang.String,&#8203;<a href="ArrayTernaryTrie.html" title="type parameter in ArrayTernaryTrie">V</a>&gt;&gt;&nbsp;entrySet()</pre>
</li>
</ul>
<a id="isFull()">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>isFull</h4>
<pre class="methodSignature">public&nbsp;boolean&nbsp;isFull()</pre>
</li>
</ul>
<a id="hilo(int)">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hilo</h4>
<pre class="methodSignature">public static&nbsp;int&nbsp;hilo&#8203;(int&nbsp;diff)</pre>
</li>
</ul>
<a id="dump()">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>dump</h4>
<pre class="methodSignature">public&nbsp;void&nbsp;dump()</pre>
</li>
</ul>
</li>
</ul>
</section>
</li>
</ul>
</div>
</div>
</main>
<!-- ========= END OF CLASS DATA ========= -->
<footer role="contentinfo">
<nav role="navigation">
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a id="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a id="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../index.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/ArrayTernaryTrie.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li><a href="#nested.class.summary">Nested</a>&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a id="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
</nav>
<p class="legalCopy"><small>Copyright &#169; 1995&#x2013;2021 <a href="https://webtide.com">Webtide</a>. All rights reserved.</small></p>
</footer>
</body>
</html>