blob: 1f6301d48624cf6822d438723288767161f8dbbf [file] [log] [blame]
<!DOCTYPE html>
<html lang="en" data-content_root="./">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" /><meta name="viewport" content="width=device-width, initial-scale=1" />
<title>Data manipulation &#8212; Apache Arrow Java Cookbook documentation</title>
<link rel="stylesheet" type="text/css" href="_static/pygments.css?v=d1102ebc" />
<link rel="stylesheet" type="text/css" href="_static/alabaster.css?v=49eeb2a1" />
<script src="_static/documentation_options.js?v=5929fcd5"></script>
<script src="_static/doctools.js?v=888ff710"></script>
<script src="_static/sphinx_highlight.js?v=dc90522c"></script>
<link rel="icon" href="_static/favicon.ico"/>
<link rel="index" title="Index" href="genindex.html" />
<link rel="search" title="Search" href="search.html" />
<link rel="next" title="Avro" href="avro.html" />
<link rel="prev" title="Substrait" href="substrait.html" />
<link rel="stylesheet" href="_static/custom.css" type="text/css" />
<!-- Matomo -->
<script>
var _paq = window._paq = window._paq || [];
/* tracker methods like "setCustomDimension" should be called before "trackPageView" */
/* We explicitly disable cookie tracking to avoid privacy issues */
_paq.push(['disableCookies']);
_paq.push(['trackPageView']);
_paq.push(['enableLinkTracking']);
(function() {
var u="https://analytics.apache.org/";
_paq.push(['setTrackerUrl', u+'matomo.php']);
_paq.push(['setSiteId', '20']);
var d=document, g=d.createElement('script'), s=d.getElementsByTagName('script')[0];
g.async=true; g.src=u+'matomo.js'; s.parentNode.insertBefore(g,s);
})();
</script>
<!-- End Matomo Code -->
</head><body>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="data-manipulation">
<h1><a class="toc-backref" href="#id1" role="doc-backlink">Data manipulation</a><a class="headerlink" href="#data-manipulation" title="Link to this heading"></a></h1>
<p>Recipes related to compare, filtering or transforming data.</p>
<nav class="contents" id="contents">
<p class="topic-title">Contents</p>
<ul class="simple">
<li><p><a class="reference internal" href="#data-manipulation" id="id1">Data manipulation</a></p>
<ul>
<li><p><a class="reference internal" href="#concatenate-vectorschemaroots" id="id2">Concatenate VectorSchemaRoots</a></p></li>
<li><p><a class="reference internal" href="#concatenate-value-vectors" id="id3">Concatenate Value Vectors</a></p></li>
<li><p><a class="reference internal" href="#compare-vectors-for-field-equality" id="id4">Compare Vectors for Field Equality</a></p></li>
<li><p><a class="reference internal" href="#compare-vectors-equality" id="id5">Compare Vectors Equality</a></p></li>
<li><p><a class="reference internal" href="#compare-values-on-the-array" id="id6">Compare Values on the Array</a></p></li>
<li><p><a class="reference internal" href="#search-values-on-the-array" id="id7">Search Values on the Array</a></p>
<ul>
<li><p><a class="reference internal" href="#linear-search-o-n" id="id8">Linear Search - O(n)</a></p></li>
<li><p><a class="reference internal" href="#binary-search-o-log-n" id="id9">Binary Search - O(log(n))</a></p></li>
</ul>
</li>
<li><p><a class="reference internal" href="#sort-values-on-the-array" id="id10">Sort Values on the Array</a></p>
<ul>
<li><p><a class="reference internal" href="#in-place-sorter-o-nlog-n" id="id11">In-place Sorter - O(nlog(n))</a></p></li>
<li><p><a class="reference internal" href="#out-place-sorter-o-nlog-n" id="id12">Out-place Sorter - O(nlog(n))</a></p></li>
</ul>
</li>
</ul>
</li>
</ul>
</nav>
<section id="concatenate-vectorschemaroots">
<h2><a class="toc-backref" href="#id2" role="doc-backlink">Concatenate VectorSchemaRoots</a><a class="headerlink" href="#concatenate-vectorschemaroots" title="Link to this heading"></a></h2>
<p>In some cases, VectorSchemaRoot needs to be modeled as a container. To accomplish
this, you can use <code class="docutils literal notranslate"><span class="pre">VectorSchemaRootAppender.append</span></code>. The following code
creates two roots, then concatenates them together:</p>
<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.BufferAllocator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.RootAllocator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.IntVector</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.VectorSchemaRoot</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.types.pojo.ArrowType</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.types.pojo.Field</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.types.pojo.FieldType</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.types.pojo.Schema</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.util.VectorSchemaRootAppender</span><span class="p">;</span>
<span class="kn">import static</span><span class="w"> </span><span class="nn">java.util.Arrays.asList</span><span class="p">;</span>
<span class="n">Field</span><span class="w"> </span><span class="n">column_one</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Field</span><span class="p">(</span><span class="s">&quot;column-one&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">FieldType</span><span class="p">.</span><span class="na">nullable</span><span class="p">(</span><span class="k">new</span><span class="w"> </span><span class="n">ArrowType</span><span class="p">.</span><span class="na">Int</span><span class="p">(</span><span class="mi">32</span><span class="p">,</span><span class="w"> </span><span class="kc">true</span><span class="p">)),</span><span class="w"> </span><span class="kc">null</span><span class="p">);</span>
<span class="n">Schema</span><span class="w"> </span><span class="n">schema</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">Schema</span><span class="p">(</span><span class="n">asList</span><span class="p">(</span><span class="n">column_one</span><span class="p">));</span>
<span class="k">try</span><span class="w"> </span><span class="p">(</span>
<span class="w"> </span><span class="n">BufferAllocator</span><span class="w"> </span><span class="n">allocator</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">RootAllocator</span><span class="p">();</span>
<span class="w"> </span><span class="n">VectorSchemaRoot</span><span class="w"> </span><span class="n">rootOne</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">VectorSchemaRoot</span><span class="p">.</span><span class="na">create</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span><span class="w"> </span><span class="n">allocator</span><span class="p">);</span>
<span class="w"> </span><span class="n">VectorSchemaRoot</span><span class="w"> </span><span class="n">rootTwo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">VectorSchemaRoot</span><span class="p">.</span><span class="na">create</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span><span class="w"> </span><span class="n">allocator</span><span class="p">);</span>
<span class="w"> </span><span class="n">VectorSchemaRoot</span><span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">VectorSchemaRoot</span><span class="p">.</span><span class="na">create</span><span class="p">(</span><span class="n">schema</span><span class="p">,</span><span class="w"> </span><span class="n">allocator</span><span class="p">);</span>
<span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">IntVector</span><span class="w"> </span><span class="n">appenderOne</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">IntVector</span><span class="p">)</span><span class="w"> </span><span class="n">rootOne</span><span class="p">.</span><span class="na">getVector</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<span class="w"> </span><span class="n">rootOne</span><span class="p">.</span><span class="na">allocateNew</span><span class="p">();</span>
<span class="w"> </span><span class="n">appenderOne</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">100</span><span class="p">);</span>
<span class="w"> </span><span class="n">appenderOne</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">);</span>
<span class="w"> </span><span class="n">rootOne</span><span class="p">.</span><span class="na">setRowCount</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
<span class="w"> </span><span class="n">IntVector</span><span class="w"> </span><span class="n">appenderTwo</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">IntVector</span><span class="p">)</span><span class="w"> </span><span class="n">rootTwo</span><span class="p">.</span><span class="na">getVector</span><span class="p">(</span><span class="mi">0</span><span class="p">);</span>
<span class="w"> </span><span class="n">rootTwo</span><span class="p">.</span><span class="na">allocateNew</span><span class="p">();</span>
<span class="w"> </span><span class="n">appenderTwo</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">34</span><span class="p">);</span>
<span class="w"> </span><span class="n">appenderTwo</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">75</span><span class="p">);</span>
<span class="w"> </span><span class="n">rootTwo</span><span class="p">.</span><span class="na">setRowCount</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
<span class="w"> </span><span class="n">result</span><span class="p">.</span><span class="na">allocateNew</span><span class="p">();</span>
<span class="w"> </span><span class="n">VectorSchemaRootAppender</span><span class="p">.</span><span class="na">append</span><span class="p">(</span><span class="n">result</span><span class="p">,</span><span class="w"> </span><span class="n">rootOne</span><span class="p">,</span><span class="w"> </span><span class="n">rootTwo</span><span class="p">);</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">print</span><span class="p">(</span><span class="n">result</span><span class="p">.</span><span class="na">contentToTSVString</span><span class="p">());</span>
<span class="p">}</span>
</pre></div>
</div>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>column-one
100
20
34
75
</pre></div>
</div>
</section>
<section id="concatenate-value-vectors">
<h2><a class="toc-backref" href="#id3" role="doc-backlink">Concatenate Value Vectors</a><a class="headerlink" href="#concatenate-value-vectors" title="Link to this heading"></a></h2>
<p>In some cases, we need to concatenate two value vectors into one. To accomplish
this, we can use <a class="reference external" href="https://github.com/apache/arrow/blob/main/java/vector/src/main/java/org/apache/arrow/vector/util/VectorAppender.java">VectorAppender</a>. This mutates the initial ValueVector.</p>
<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.BufferAllocator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.RootAllocator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.IntVector</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.ValueVector</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.util.VectorAppender</span><span class="p">;</span>
<span class="k">try</span><span class="w"> </span><span class="p">(</span>
<span class="w"> </span><span class="n">BufferAllocator</span><span class="w"> </span><span class="n">allocator</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">RootAllocator</span><span class="p">();</span>
<span class="w"> </span><span class="n">IntVector</span><span class="w"> </span><span class="n">initialValues</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">IntVector</span><span class="p">(</span><span class="s">&quot;initialValues&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">allocator</span><span class="p">);</span>
<span class="w"> </span><span class="n">IntVector</span><span class="w"> </span><span class="n">toAppend</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">IntVector</span><span class="p">(</span><span class="s">&quot;toAppend&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">allocator</span><span class="p">);</span>
<span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">initialValues</span><span class="p">.</span><span class="na">allocateNew</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
<span class="w"> </span><span class="n">initialValues</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">);</span>
<span class="w"> </span><span class="n">initialValues</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">);</span>
<span class="w"> </span><span class="n">initialValues</span><span class="p">.</span><span class="na">setValueCount</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&quot;Initial IntVector: &quot;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">initialValues</span><span class="p">);</span>
<span class="w"> </span><span class="n">toAppend</span><span class="p">.</span><span class="na">allocateNew</span><span class="p">(</span><span class="mi">4</span><span class="p">);</span>
<span class="w"> </span><span class="n">toAppend</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">4</span><span class="p">);</span>
<span class="w"> </span><span class="n">toAppend</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">3</span><span class="p">,</span><span class="w"> </span><span class="mi">6</span><span class="p">);</span>
<span class="w"> </span><span class="n">toAppend</span><span class="p">.</span><span class="na">setValueCount</span><span class="p">(</span><span class="mi">4</span><span class="p">);</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&quot;IntVector to Append: &quot;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">toAppend</span><span class="p">);</span>
<span class="w"> </span><span class="n">VectorAppender</span><span class="w"> </span><span class="n">appenderUtil</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">VectorAppender</span><span class="p">(</span><span class="n">initialValues</span><span class="p">);</span>
<span class="w"> </span><span class="n">toAppend</span><span class="p">.</span><span class="na">accept</span><span class="p">(</span><span class="n">appenderUtil</span><span class="p">,</span><span class="w"> </span><span class="kc">null</span><span class="p">);</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="s">&quot;IntVector Result: &quot;</span><span class="w"> </span><span class="o">+</span><span class="w"> </span><span class="n">initialValues</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
</div>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>Initial IntVector: [1, 2]
IntVector to Append: [null, 4, null, 6]
IntVector Result: [1, 2, null, 4, null, 6]
</pre></div>
</div>
</section>
<section id="compare-vectors-for-field-equality">
<h2><a class="toc-backref" href="#id4" role="doc-backlink">Compare Vectors for Field Equality</a><a class="headerlink" href="#compare-vectors-for-field-equality" title="Link to this heading"></a></h2>
<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.BufferAllocator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.IntVector</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.compare.TypeEqualsVisitor</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.RootAllocator</span><span class="p">;</span>
<span class="k">try</span><span class="p">(</span>
<span class="w"> </span><span class="n">BufferAllocator</span><span class="w"> </span><span class="n">allocator</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">RootAllocator</span><span class="p">();</span>
<span class="w"> </span><span class="n">IntVector</span><span class="w"> </span><span class="n">right</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">IntVector</span><span class="p">(</span><span class="s">&quot;int&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">allocator</span><span class="p">);</span>
<span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">right</span><span class="p">.</span><span class="na">allocateNew</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span>
<span class="w"> </span><span class="n">right</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
<span class="w"> </span><span class="n">right</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">);</span>
<span class="w"> </span><span class="n">right</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="mi">30</span><span class="p">);</span>
<span class="w"> </span><span class="n">right</span><span class="p">.</span><span class="na">setValueCount</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span>
<span class="w"> </span><span class="n">IntVector</span><span class="w"> </span><span class="n">left1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">IntVector</span><span class="p">(</span><span class="s">&quot;int&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">allocator</span><span class="p">);</span>
<span class="w"> </span><span class="n">IntVector</span><span class="w"> </span><span class="n">left2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">IntVector</span><span class="p">(</span><span class="s">&quot;int2&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">allocator</span><span class="p">);</span>
<span class="w"> </span><span class="n">TypeEqualsVisitor</span><span class="w"> </span><span class="n">visitor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">TypeEqualsVisitor</span><span class="p">(</span><span class="n">right</span><span class="p">);</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">visitor</span><span class="p">.</span><span class="na">equals</span><span class="p">(</span><span class="n">left1</span><span class="p">));</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">visitor</span><span class="p">.</span><span class="na">equals</span><span class="p">(</span><span class="n">left2</span><span class="p">));</span>
<span class="p">}</span>
</pre></div>
</div>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>true
false
</pre></div>
</div>
</section>
<section id="compare-vectors-equality">
<h2><a class="toc-backref" href="#id5" role="doc-backlink">Compare Vectors Equality</a><a class="headerlink" href="#compare-vectors-equality" title="Link to this heading"></a></h2>
<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.BufferAllocator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.IntVector</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.RootAllocator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.compare.VectorEqualsVisitor</span><span class="p">;</span>
<span class="k">try</span><span class="p">(</span>
<span class="w"> </span><span class="n">BufferAllocator</span><span class="w"> </span><span class="n">allocator</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">RootAllocator</span><span class="p">();</span>
<span class="w"> </span><span class="n">IntVector</span><span class="w"> </span><span class="n">vector1</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">IntVector</span><span class="p">(</span><span class="s">&quot;vector1&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">allocator</span><span class="p">);</span>
<span class="w"> </span><span class="n">IntVector</span><span class="w"> </span><span class="n">vector2</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">IntVector</span><span class="p">(</span><span class="s">&quot;vector1&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">allocator</span><span class="p">);</span>
<span class="w"> </span><span class="n">IntVector</span><span class="w"> </span><span class="n">vector3</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">IntVector</span><span class="p">(</span><span class="s">&quot;vector1&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">allocator</span><span class="p">)</span>
<span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">vector1</span><span class="p">.</span><span class="na">allocateNew</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="w"> </span><span class="n">vector1</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
<span class="w"> </span><span class="n">vector1</span><span class="p">.</span><span class="na">setValueCount</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="w"> </span><span class="n">vector2</span><span class="p">.</span><span class="na">allocateNew</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="w"> </span><span class="n">vector2</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
<span class="w"> </span><span class="n">vector2</span><span class="p">.</span><span class="na">setValueCount</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="w"> </span><span class="n">vector3</span><span class="p">.</span><span class="na">allocateNew</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="w"> </span><span class="n">vector3</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">20</span><span class="p">);</span>
<span class="w"> </span><span class="n">vector3</span><span class="p">.</span><span class="na">setValueCount</span><span class="p">(</span><span class="mi">1</span><span class="p">);</span>
<span class="w"> </span><span class="n">VectorEqualsVisitor</span><span class="w"> </span><span class="n">visitor</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">VectorEqualsVisitor</span><span class="p">();</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">visitor</span><span class="p">.</span><span class="na">vectorEquals</span><span class="p">(</span><span class="n">vector1</span><span class="p">,</span><span class="w"> </span><span class="n">vector2</span><span class="p">));</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">visitor</span><span class="p">.</span><span class="na">vectorEquals</span><span class="p">(</span><span class="n">vector1</span><span class="p">,</span><span class="w"> </span><span class="n">vector3</span><span class="p">));</span>
<span class="p">}</span>
</pre></div>
</div>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>true
false
</pre></div>
</div>
</section>
<section id="compare-values-on-the-array">
<h2><a class="toc-backref" href="#id6" role="doc-backlink">Compare Values on the Array</a><a class="headerlink" href="#compare-values-on-the-array" title="Link to this heading"></a></h2>
<p>Comparing two values at the given indices in the vectors:</p>
<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.algorithm.sort.DefaultVectorComparators</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.algorithm.sort.VectorValueComparator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.BufferAllocator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.VarCharVector</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.RootAllocator</span><span class="p">;</span>
<span class="k">try</span><span class="p">(</span>
<span class="w"> </span><span class="n">BufferAllocator</span><span class="w"> </span><span class="n">allocator</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">RootAllocator</span><span class="p">();</span>
<span class="w"> </span><span class="n">VarCharVector</span><span class="w"> </span><span class="n">vec</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">VarCharVector</span><span class="p">(</span><span class="s">&quot;valueindexcomparator&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">allocator</span><span class="p">);</span>
<span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">vec</span><span class="p">.</span><span class="na">allocateNew</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span>
<span class="w"> </span><span class="n">vec</span><span class="p">.</span><span class="na">setValueCount</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span>
<span class="w"> </span><span class="n">vec</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;ba&quot;</span><span class="p">.</span><span class="na">getBytes</span><span class="p">());</span>
<span class="w"> </span><span class="n">vec</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;abc&quot;</span><span class="p">.</span><span class="na">getBytes</span><span class="p">());</span>
<span class="w"> </span><span class="n">vec</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">2</span><span class="p">,</span><span class="w"> </span><span class="s">&quot;aa&quot;</span><span class="p">.</span><span class="na">getBytes</span><span class="p">());</span>
<span class="w"> </span><span class="n">VectorValueComparator</span><span class="o">&lt;</span><span class="n">VarCharVector</span><span class="o">&gt;</span><span class="w"> </span><span class="n">valueComparator</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DefaultVectorComparators</span><span class="p">.</span><span class="na">createDefaultComparator</span><span class="p">(</span><span class="n">vec</span><span class="p">);</span>
<span class="w"> </span><span class="n">valueComparator</span><span class="p">.</span><span class="na">attachVector</span><span class="p">(</span><span class="n">vec</span><span class="p">);</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">valueComparator</span><span class="p">.</span><span class="na">compare</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">1</span><span class="p">)</span><span class="w"> </span><span class="o">&gt;</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">valueComparator</span><span class="p">.</span><span class="na">compare</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">2</span><span class="p">)</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">0</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
</div>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>true
false
</pre></div>
</div>
<p>Consider that if we need our own comparator we could extend VectorValueComparator
and override compareNotNull method as needed</p>
</section>
<section id="search-values-on-the-array">
<h2><a class="toc-backref" href="#id7" role="doc-backlink">Search Values on the Array</a><a class="headerlink" href="#search-values-on-the-array" title="Link to this heading"></a></h2>
<section id="linear-search-o-n">
<h3><a class="toc-backref" href="#id8" role="doc-backlink">Linear Search - O(n)</a><a class="headerlink" href="#linear-search-o-n" title="Link to this heading"></a></h3>
<p>Algorithm: org.apache.arrow.algorithm.search.VectorSearcher#linearSearch - O(n)</p>
<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.algorithm.search.VectorSearcher</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.algorithm.sort.DefaultVectorComparators</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.algorithm.sort.VectorValueComparator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.BufferAllocator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.IntVector</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.RootAllocator</span><span class="p">;</span>
<span class="k">try</span><span class="p">(</span>
<span class="w"> </span><span class="n">BufferAllocator</span><span class="w"> </span><span class="n">allocator</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">RootAllocator</span><span class="p">();</span>
<span class="w"> </span><span class="n">IntVector</span><span class="w"> </span><span class="n">linearSearchVector</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">IntVector</span><span class="p">(</span><span class="s">&quot;linearSearchVector&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">allocator</span><span class="p">);</span>
<span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">linearSearchVector</span><span class="p">.</span><span class="na">allocateNew</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span>
<span class="w"> </span><span class="n">linearSearchVector</span><span class="p">.</span><span class="na">setValueCount</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">linearSearchVector</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="n">i</span><span class="p">,</span><span class="w"> </span><span class="n">i</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">VectorValueComparator</span><span class="o">&lt;</span><span class="n">IntVector</span><span class="o">&gt;</span><span class="w"> </span><span class="n">comparatorInt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DefaultVectorComparators</span><span class="p">.</span><span class="na">createDefaultComparator</span><span class="p">(</span><span class="n">linearSearchVector</span><span class="p">);</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">VectorSearcher</span><span class="p">.</span><span class="na">linearSearch</span><span class="p">(</span><span class="n">linearSearchVector</span><span class="p">,</span><span class="w"> </span><span class="n">comparatorInt</span><span class="p">,</span><span class="w"> </span><span class="n">linearSearchVector</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">result</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
</div>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>3
</pre></div>
</div>
</section>
<section id="binary-search-o-log-n">
<h3><a class="toc-backref" href="#id9" role="doc-backlink">Binary Search - O(log(n))</a><a class="headerlink" href="#binary-search-o-log-n" title="Link to this heading"></a></h3>
<p>Algorithm: org.apache.arrow.algorithm.search.VectorSearcher#binarySearch - O(log(n))</p>
<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.algorithm.search.VectorSearcher</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.algorithm.sort.DefaultVectorComparators</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.algorithm.sort.VectorValueComparator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.BufferAllocator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.IntVector</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.RootAllocator</span><span class="p">;</span>
<span class="k">try</span><span class="p">(</span>
<span class="w"> </span><span class="n">BufferAllocator</span><span class="w"> </span><span class="n">allocator</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">RootAllocator</span><span class="p">();</span>
<span class="w"> </span><span class="n">IntVector</span><span class="w"> </span><span class="n">binarySearchVector</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">IntVector</span><span class="p">(</span><span class="s">&quot;&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">allocator</span><span class="p">);</span>
<span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">binarySearchVector</span><span class="p">.</span><span class="na">allocateNew</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span>
<span class="w"> </span><span class="n">binarySearchVector</span><span class="p">.</span><span class="na">setValueCount</span><span class="p">(</span><span class="mi">10</span><span class="p">);</span>
<span class="w"> </span><span class="k">for</span><span class="w"> </span><span class="p">(</span><span class="kt">int</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="mi">0</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="w"> </span><span class="o">&lt;</span><span class="w"> </span><span class="mi">10</span><span class="p">;</span><span class="w"> </span><span class="n">i</span><span class="o">++</span><span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">binarySearchVector</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="n">i</span><span class="p">,</span><span class="w"> </span><span class="n">i</span><span class="p">);</span>
<span class="w"> </span><span class="p">}</span>
<span class="w"> </span><span class="n">VectorValueComparator</span><span class="o">&lt;</span><span class="n">IntVector</span><span class="o">&gt;</span><span class="w"> </span><span class="n">comparatorInt</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DefaultVectorComparators</span><span class="p">.</span><span class="na">createDefaultComparator</span><span class="p">(</span><span class="n">binarySearchVector</span><span class="p">);</span>
<span class="w"> </span><span class="kt">int</span><span class="w"> </span><span class="n">result</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">VectorSearcher</span><span class="p">.</span><span class="na">binarySearch</span><span class="p">(</span><span class="n">binarySearchVector</span><span class="p">,</span><span class="w"> </span><span class="n">comparatorInt</span><span class="p">,</span><span class="w"> </span><span class="n">binarySearchVector</span><span class="p">,</span><span class="w"> </span><span class="mi">3</span><span class="p">);</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">result</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
</div>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>3
</pre></div>
</div>
</section>
</section>
<section id="sort-values-on-the-array">
<h2><a class="toc-backref" href="#id10" role="doc-backlink">Sort Values on the Array</a><a class="headerlink" href="#sort-values-on-the-array" title="Link to this heading"></a></h2>
<section id="in-place-sorter-o-nlog-n">
<h3><a class="toc-backref" href="#id11" role="doc-backlink">In-place Sorter - O(nlog(n))</a><a class="headerlink" href="#in-place-sorter-o-nlog-n" title="Link to this heading"></a></h3>
<p>Sorting by manipulating the original vector.
Algorithm: org.apache.arrow.algorithm.sort.FixedWidthInPlaceVectorSorter - O(nlog(n))</p>
<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.algorithm.sort.DefaultVectorComparators</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.algorithm.sort.FixedWidthInPlaceVectorSorter</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.algorithm.sort.VectorValueComparator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.BufferAllocator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.IntVector</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.RootAllocator</span><span class="p">;</span>
<span class="k">try</span><span class="p">(</span>
<span class="w"> </span><span class="n">BufferAllocator</span><span class="w"> </span><span class="n">allocator</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">RootAllocator</span><span class="p">();</span>
<span class="w"> </span><span class="n">IntVector</span><span class="w"> </span><span class="n">intVectorNotSorted</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">IntVector</span><span class="p">(</span><span class="s">&quot;intvectornotsorted&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">allocator</span><span class="p">);</span>
<span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">intVectorNotSorted</span><span class="p">.</span><span class="na">allocateNew</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span>
<span class="w"> </span><span class="n">intVectorNotSorted</span><span class="p">.</span><span class="na">setValueCount</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span>
<span class="w"> </span><span class="n">intVectorNotSorted</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
<span class="w"> </span><span class="n">intVectorNotSorted</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">8</span><span class="p">);</span>
<span class="w"> </span><span class="n">intVectorNotSorted</span><span class="p">.</span><span class="na">setNull</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
<span class="w"> </span><span class="n">FixedWidthInPlaceVectorSorter</span><span class="o">&lt;</span><span class="n">IntVector</span><span class="o">&gt;</span><span class="w"> </span><span class="n">sorter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">FixedWidthInPlaceVectorSorter</span><span class="o">&lt;</span><span class="n">IntVector</span><span class="o">&gt;</span><span class="p">();</span>
<span class="w"> </span><span class="n">VectorValueComparator</span><span class="o">&lt;</span><span class="n">IntVector</span><span class="o">&gt;</span><span class="w"> </span><span class="n">comparator</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DefaultVectorComparators</span><span class="p">.</span><span class="na">createDefaultComparator</span><span class="p">(</span><span class="n">intVectorNotSorted</span><span class="p">);</span>
<span class="w"> </span><span class="n">sorter</span><span class="p">.</span><span class="na">sortInPlace</span><span class="p">(</span><span class="n">intVectorNotSorted</span><span class="p">,</span><span class="w"> </span><span class="n">comparator</span><span class="p">);</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">intVectorNotSorted</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
</div>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[null, 8, 10]
</pre></div>
</div>
</section>
<section id="out-place-sorter-o-nlog-n">
<h3><a class="toc-backref" href="#id12" role="doc-backlink">Out-place Sorter - O(nlog(n))</a><a class="headerlink" href="#out-place-sorter-o-nlog-n" title="Link to this heading"></a></h3>
<p>Sorting by copies vector elements to a new vector in sorted order - O(nlog(n))
Algorithm: : org.apache.arrow.algorithm.sort.FixedWidthInPlaceVectorSorter.
FixedWidthOutOfPlaceVectorSorter &amp; VariableWidthOutOfPlaceVectorSor</p>
<div class="highlight-java notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.algorithm.sort.DefaultVectorComparators</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.algorithm.sort.FixedWidthOutOfPlaceVectorSorter</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.algorithm.sort.OutOfPlaceVectorSorter</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.algorithm.sort.VectorValueComparator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.BufferAllocator</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.vector.IntVector</span><span class="p">;</span>
<span class="kn">import</span><span class="w"> </span><span class="nn">org.apache.arrow.memory.RootAllocator</span><span class="p">;</span>
<span class="k">try</span><span class="p">(</span>
<span class="w"> </span><span class="n">BufferAllocator</span><span class="w"> </span><span class="n">allocator</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">RootAllocator</span><span class="p">();</span>
<span class="w"> </span><span class="n">IntVector</span><span class="w"> </span><span class="n">intVectorNotSorted</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">IntVector</span><span class="p">(</span><span class="s">&quot;intvectornotsorted&quot;</span><span class="p">,</span><span class="w"> </span><span class="n">allocator</span><span class="p">);</span>
<span class="w"> </span><span class="n">IntVector</span><span class="w"> </span><span class="n">intVectorSorted</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="p">(</span><span class="n">IntVector</span><span class="p">)</span><span class="w"> </span><span class="n">intVectorNotSorted</span><span class="p">.</span><span class="na">getField</span><span class="p">()</span>
<span class="w"> </span><span class="p">.</span><span class="na">getFieldType</span><span class="p">().</span><span class="na">createNewSingleVector</span><span class="p">(</span><span class="s">&quot;new-out-of-place-sorter&quot;</span><span class="p">,</span>
<span class="w"> </span><span class="n">allocator</span><span class="p">,</span><span class="w"> </span><span class="kc">null</span><span class="p">);</span>
<span class="p">)</span><span class="w"> </span><span class="p">{</span>
<span class="w"> </span><span class="n">intVectorNotSorted</span><span class="p">.</span><span class="na">allocateNew</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span>
<span class="w"> </span><span class="n">intVectorNotSorted</span><span class="p">.</span><span class="na">setValueCount</span><span class="p">(</span><span class="mi">3</span><span class="p">);</span>
<span class="w"> </span><span class="n">intVectorNotSorted</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">0</span><span class="p">,</span><span class="w"> </span><span class="mi">10</span><span class="p">);</span>
<span class="w"> </span><span class="n">intVectorNotSorted</span><span class="p">.</span><span class="na">set</span><span class="p">(</span><span class="mi">1</span><span class="p">,</span><span class="w"> </span><span class="mi">8</span><span class="p">);</span>
<span class="w"> </span><span class="n">intVectorNotSorted</span><span class="p">.</span><span class="na">setNull</span><span class="p">(</span><span class="mi">2</span><span class="p">);</span>
<span class="w"> </span><span class="n">OutOfPlaceVectorSorter</span><span class="o">&lt;</span><span class="n">IntVector</span><span class="o">&gt;</span><span class="w"> </span><span class="n">sorterOutOfPlaceSorter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="k">new</span><span class="w"> </span><span class="n">FixedWidthOutOfPlaceVectorSorter</span><span class="o">&lt;&gt;</span><span class="p">();</span>
<span class="w"> </span><span class="n">VectorValueComparator</span><span class="o">&lt;</span><span class="n">IntVector</span><span class="o">&gt;</span><span class="w"> </span><span class="n">comparatorOutOfPlaceSorter</span><span class="w"> </span><span class="o">=</span><span class="w"> </span><span class="n">DefaultVectorComparators</span><span class="p">.</span><span class="na">createDefaultComparator</span><span class="p">(</span><span class="n">intVectorNotSorted</span><span class="p">);</span>
<span class="w"> </span><span class="n">intVectorSorted</span><span class="p">.</span><span class="na">allocateNew</span><span class="p">(</span><span class="n">intVectorNotSorted</span><span class="p">.</span><span class="na">getValueCount</span><span class="p">());</span>
<span class="w"> </span><span class="n">intVectorSorted</span><span class="p">.</span><span class="na">setValueCount</span><span class="p">(</span><span class="n">intVectorNotSorted</span><span class="p">.</span><span class="na">getValueCount</span><span class="p">());</span>
<span class="w"> </span><span class="n">sorterOutOfPlaceSorter</span><span class="p">.</span><span class="na">sortOutOfPlace</span><span class="p">(</span><span class="n">intVectorNotSorted</span><span class="p">,</span><span class="w"> </span><span class="n">intVectorSorted</span><span class="p">,</span><span class="w"> </span><span class="n">comparatorOutOfPlaceSorter</span><span class="p">);</span>
<span class="w"> </span><span class="n">System</span><span class="p">.</span><span class="na">out</span><span class="p">.</span><span class="na">println</span><span class="p">(</span><span class="n">intVectorSorted</span><span class="p">);</span>
<span class="p">}</span>
</pre></div>
</div>
<div class="highlight-none notranslate"><div class="highlight"><pre><span></span>[null, 8, 10]
</pre></div>
</div>
</section>
</section>
</section>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<p class="logo">
<a href="index.html">
<img class="logo" src="_static/arrow-logo_vertical_black-txt_transparent-bg.svg" alt="Logo" />
</a>
</p>
<p>
<iframe src="https://ghbtns.com/github-btn.html?user=apache&repo=arrow-cookbook&type=none&count=true&size=large&v=2"
allowtransparency="true" frameborder="0" scrolling="0" width="200px" height="35px"></iframe>
</p>
<h3>Navigation</h3>
<p class="caption" role="heading"><span class="caption-text">Contents:</span></p>
<ul class="current">
<li class="toctree-l1"><a class="reference internal" href="create.html">Creating Arrow Objects</a></li>
<li class="toctree-l1"><a class="reference internal" href="schema.html">Working with Schema</a></li>
<li class="toctree-l1"><a class="reference internal" href="io.html">Reading and writing data</a></li>
<li class="toctree-l1"><a class="reference internal" href="flight.html">Arrow Flight</a></li>
<li class="toctree-l1"><a class="reference internal" href="dataset.html">Dataset</a></li>
<li class="toctree-l1"><a class="reference internal" href="substrait.html">Substrait</a></li>
<li class="toctree-l1 current"><a class="current reference internal" href="#">Data manipulation</a><ul>
<li class="toctree-l2"><a class="reference internal" href="#concatenate-vectorschemaroots">Concatenate VectorSchemaRoots</a></li>
<li class="toctree-l2"><a class="reference internal" href="#concatenate-value-vectors">Concatenate Value Vectors</a></li>
<li class="toctree-l2"><a class="reference internal" href="#compare-vectors-for-field-equality">Compare Vectors for Field Equality</a></li>
<li class="toctree-l2"><a class="reference internal" href="#compare-vectors-equality">Compare Vectors Equality</a></li>
<li class="toctree-l2"><a class="reference internal" href="#compare-values-on-the-array">Compare Values on the Array</a></li>
<li class="toctree-l2"><a class="reference internal" href="#search-values-on-the-array">Search Values on the Array</a></li>
<li class="toctree-l2"><a class="reference internal" href="#sort-values-on-the-array">Sort Values on the Array</a></li>
</ul>
</li>
<li class="toctree-l1"><a class="reference internal" href="avro.html">Avro</a></li>
<li class="toctree-l1"><a class="reference internal" href="jdbc.html">Arrow JDBC Adapter</a></li>
</ul>
<hr />
<ul>
<li class="toctree-l1"><a href="https://arrow.apache.org/docs/java/index.html">User Guide</a></li>
<li class="toctree-l1"><a href="https://arrow.apache.org/docs/java/reference/index.html">API Reference</a></li>
</ul>
<div class="relations">
<h3>Related Topics</h3>
<ul>
<li><a href="index.html">Documentation overview</a><ul>
<li>Previous: <a href="substrait.html" title="previous chapter">Substrait</a></li>
<li>Next: <a href="avro.html" title="next chapter">Avro</a></li>
</ul></li>
</ul>
</div>
<div id="searchbox" style="display: none" role="search">
<h3 id="searchlabel">Quick search</h3>
<div class="searchformwrapper">
<form class="search" action="search.html" method="get">
<input type="text" name="q" aria-labelledby="searchlabel" autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false"/>
<input type="submit" value="Go" />
</form>
</div>
</div>
<script>document.getElementById('searchbox').style.display = "block"</script>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="footer">
&#169;2022, Apache Software Foundation.
|
Powered by <a href="https://www.sphinx-doc.org/">Sphinx 7.2.6</a>
&amp; <a href="https://alabaster.readthedocs.io">Alabaster 0.7.16</a>
|
<a href="_sources/data.rst.txt"
rel="nofollow">Page source</a>
</div>
</body>
</html>