| <!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 — Apache Arrow Java Cookbook documentation</title> |
| <link rel="stylesheet" type="text/css" href="_static/pygments.css?v=4f649999" /> |
| <link rel="stylesheet" type="text/css" href="_static/alabaster.css?v=39aeeac0" /> |
| <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" /> |
| |
| |
| <meta name="viewport" content="width=device-width, initial-scale=0.9, maximum-scale=0.9" /> |
| <!-- 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">"column-one"</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">"initialValues"</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">"toAppend"</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">"Initial IntVector: "</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">"IntVector to Append: "</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">"IntVector Result: "</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">"int"</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">"int"</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">"int2"</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">"vector1"</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">"vector1"</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">"vector1"</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">"valueindexcomparator"</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">"ba"</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">"abc"</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">"aa"</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"><</span><span class="n">VarCharVector</span><span class="o">></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">></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"><</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">"linearSearchVector"</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"><</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"><</span><span class="n">IntVector</span><span class="o">></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">""</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"><</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"><</span><span class="n">IntVector</span><span class="o">></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">"intvectornotsorted"</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"><</span><span class="n">IntVector</span><span class="o">></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"><</span><span class="n">IntVector</span><span class="o">></span><span class="p">();</span> |
| <span class="w"> </span><span class="n">VectorValueComparator</span><span class="o"><</span><span class="n">IntVector</span><span class="o">></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 & 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">"intvectornotsorted"</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">"new-out-of-place-sorter"</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"><</span><span class="n">IntVector</span><span class="o">></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"><></span><span class="p">();</span> |
| <span class="w"> </span><span class="n">VectorValueComparator</span><span class="o"><</span><span class="n">IntVector</span><span class="o">></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"> |
| ©2022, Apache Software Foundation. |
| |
| | |
| Powered by <a href="http://sphinx-doc.org/">Sphinx 7.2.6</a> |
| & <a href="https://github.com/bitprophet/alabaster">Alabaster 0.7.13</a> |
| |
| | |
| <a href="_sources/data.rst.txt" |
| rel="nofollow">Page source</a> |
| </div> |
| |
| |
| |
| |
| </body> |
| </html> |