blob: 7d2589a4cd50a521064a550693db3f85d572dd32 [file] [log] [blame]
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<!-- NewPage -->
<html lang="en">
<head>
<!-- Generated by javadoc (1.8.0_252) on Thu Feb 04 20:36:07 PST 2021 -->
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>MurmurHash3v2 (datasketches-java 2.0.0 API)</title>
<meta name="date" content="2021-02-04">
<link rel="stylesheet" type="text/css" href="../../../../stylesheet.css" title="Style">
<script type="text/javascript" src="../../../../script.js"></script>
</head>
<body>
<script type="text/javascript"><!--
try {
if (location.href.indexOf('is-external=true') == -1) {
parent.document.title="MurmurHash3v2 (datasketches-java 2.0.0 API)";
}
}
catch(err) {
}
//-->
var methods = {"i0":9,"i1":9,"i2":9,"i3":9,"i4":9,"i5":9,"i6":9,"i7":9};
var tabs = {65535:["t0","All Methods"],1:["t1","Static Methods"],8:["t4","Concrete Methods"]};
var altColor = "altColor";
var rowColor = "rowColor";
var tableTab = "tableTab";
var activeTableTab = "activeTableTab";
</script>
<noscript>
<div>JavaScript is disabled on your browser.</div>
</noscript>
<!-- ========= START OF TOP NAVBAR ======= -->
<div class="topNav"><a name="navbar.top">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.top" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.top.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/MurmurHash3v2.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/datasketches/hash/MurmurHash3Adaptor.html" title="class in org.apache.datasketches.hash"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/datasketches/hash/XxHash.html" title="class in org.apache.datasketches.hash"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/datasketches/hash/MurmurHash3v2.html" target="_top">Frames</a></li>
<li><a href="MurmurHash3v2.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_top">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_top");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.top">
<!-- -->
</a></div>
<!-- ========= END OF TOP NAVBAR ========= -->
<!-- ======== START OF CLASS DATA ======== -->
<div class="header">
<div class="subTitle">org.apache.datasketches.hash</div>
<h2 title="Class MurmurHash3v2" class="title">Class MurmurHash3v2</h2>
</div>
<div class="contentContainer">
<ul class="inheritance">
<li><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">java.lang.Object</a></li>
<li>
<ul class="inheritance">
<li>org.apache.datasketches.hash.MurmurHash3v2</li>
</ul>
</li>
</ul>
<div class="description">
<ul class="blockList">
<li class="blockList">
<hr>
<br>
<pre>public final class <span class="typeNameLabel">MurmurHash3v2</span>
extends <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></pre>
<div class="block"><p>The MurmurHash3 is a fast, non-cryptographic, 128-bit hash function that has
excellent avalanche and 2-way bit independence properties.</p>
<p>Austin Appleby's C++
<a href="https://github.com/aappleby/smhasher/blob/master/src/MurmurHash3.cpp">
MurmurHash3_x64_128(...), final revision 150</a>,
which is in the Public Domain, was the inspiration for this implementation in Java.</p>
<p>This implementation of the MurmurHash3 allows hashing of a block of Memory defined by an offset
and length. The calling API also allows the user to supply the small output array of two longs,
so that the entire hash function is static and free of object allocations.</p>
<p>This implementation produces exactly the same hash result as the
<a href="../../../../org/apache/datasketches/hash/MurmurHash3.html#hash-long:A-long-"><code>MurmurHash3.hash(long[], long)</code></a> function given compatible inputs.</p></div>
<dl>
<dt><span class="simpleTagLabel">Author:</span></dt>
<dd>Lee Rhodes</dd>
</dl>
</li>
</ul>
</div>
<div class="summary">
<ul class="blockList">
<li class="blockList">
<!-- ======== CONSTRUCTOR SUMMARY ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.summary">
<!-- -->
</a>
<h3>Constructor Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Constructor Summary table, listing constructors, and an explanation">
<caption><span>Constructors</span><span class="tabEnd">&nbsp;</span></caption>
<tr>
<th class="colOne" scope="col">Constructor and Description</th>
</tr>
<tr class="altColor">
<td class="colOne"><code><span class="memberNameLink"><a href="../../../../org/apache/datasketches/hash/MurmurHash3v2.html#MurmurHash3v2--">MurmurHash3v2</a></span>()</code>&nbsp;</td>
</tr>
</table>
</li>
</ul>
<!-- ========== METHOD SUMMARY =========== -->
<ul class="blockList">
<li class="blockList"><a name="method.summary">
<!-- -->
</a>
<h3>Method Summary</h3>
<table class="memberSummary" border="0" cellpadding="3" cellspacing="0" summary="Method Summary table, listing methods, and an explanation">
<caption><span id="t0" class="activeTableTab"><span>All Methods</span><span class="tabEnd">&nbsp;</span></span><span id="t1" class="tableTab"><span><a href="javascript:show(1);">Static Methods</a></span><span class="tabEnd">&nbsp;</span></span><span id="t4" class="tableTab"><span><a href="javascript:show(8);">Concrete Methods</a></span><span class="tabEnd">&nbsp;</span></span></caption>
<tr>
<th class="colFirst" scope="col">Modifier and Type</th>
<th class="colLast" scope="col">Method and Description</th>
</tr>
<tr id="i0" class="altColor">
<td class="colFirst"><code>static long[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/datasketches/hash/MurmurHash3v2.html#hash-byte:A-long-">hash</a></span>(byte[]&nbsp;in,
long&nbsp;seed)</code>
<div class="block">Returns a 128-bit hash of the input.</div>
</td>
</tr>
<tr id="i1" class="rowColor">
<td class="colFirst"><code>static long[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/datasketches/hash/MurmurHash3v2.html#hash-char:A-long-">hash</a></span>(char[]&nbsp;in,
long&nbsp;seed)</code>
<div class="block">Returns a 128-bit hash of the input.</div>
</td>
</tr>
<tr id="i2" class="altColor">
<td class="colFirst"><code>static long[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/datasketches/hash/MurmurHash3v2.html#hash-double-long-long:A-">hash</a></span>(double&nbsp;in,
long&nbsp;seed,
long[]&nbsp;hashOut)</code>
<div class="block">Returns a 128-bit hash of the input.</div>
</td>
</tr>
<tr id="i3" class="rowColor">
<td class="colFirst"><code>static long[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/datasketches/hash/MurmurHash3v2.html#hash-int:A-long-">hash</a></span>(int[]&nbsp;in,
long&nbsp;seed)</code>
<div class="block">Returns a 128-bit hash of the input.</div>
</td>
</tr>
<tr id="i4" class="altColor">
<td class="colFirst"><code>static long[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/datasketches/hash/MurmurHash3v2.html#hash-long:A-long-">hash</a></span>(long[]&nbsp;in,
long&nbsp;seed)</code>
<div class="block">Returns a 128-bit hash of the input.</div>
</td>
</tr>
<tr id="i5" class="rowColor">
<td class="colFirst"><code>static long[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/datasketches/hash/MurmurHash3v2.html#hash-long-long-long:A-">hash</a></span>(long&nbsp;in,
long&nbsp;seed,
long[]&nbsp;hashOut)</code>
<div class="block">Returns a 128-bit hash of the input.</div>
</td>
</tr>
<tr id="i6" class="altColor">
<td class="colFirst"><code>static long[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/datasketches/hash/MurmurHash3v2.html#hash-org.apache.datasketches.memory.Memory-long-long-long-long:A-">hash</a></span>(org.apache.datasketches.memory.Memory&nbsp;mem,
long&nbsp;offsetBytes,
long&nbsp;lengthBytes,
long&nbsp;seed,
long[]&nbsp;hashOut)</code>
<div class="block">Returns a 128-bit hash of the input as a long array of size 2.</div>
</td>
</tr>
<tr id="i7" class="rowColor">
<td class="colFirst"><code>static long[]</code></td>
<td class="colLast"><code><span class="memberNameLink"><a href="../../../../org/apache/datasketches/hash/MurmurHash3v2.html#hash-java.lang.String-long-long:A-">hash</a></span>(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;in,
long&nbsp;seed,
long[]&nbsp;hashOut)</code>
<div class="block">Returns a 128-bit hash of the input.</div>
</td>
</tr>
</table>
<ul class="blockList">
<li class="blockList"><a name="methods.inherited.from.class.java.lang.Object">
<!-- -->
</a>
<h3>Methods inherited from class&nbsp;java.lang.<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true" title="class or interface in java.lang">Object</a></h3>
<code><a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#clone--" title="class or interface in java.lang">clone</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#equals-java.lang.Object-" title="class or interface in java.lang">equals</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#finalize--" title="class or interface in java.lang">finalize</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#getClass--" title="class or interface in java.lang">getClass</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#hashCode--" title="class or interface in java.lang">hashCode</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notify--" title="class or interface in java.lang">notify</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#notifyAll--" title="class or interface in java.lang">notifyAll</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#toString--" title="class or interface in java.lang">toString</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait--" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-" title="class or interface in java.lang">wait</a>, <a href="https://docs.oracle.com/javase/8/docs/api/java/lang/Object.html?is-external=true#wait-long-int-" title="class or interface in java.lang">wait</a></code></li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
<div class="details">
<ul class="blockList">
<li class="blockList">
<!-- ========= CONSTRUCTOR DETAIL ======== -->
<ul class="blockList">
<li class="blockList"><a name="constructor.detail">
<!-- -->
</a>
<h3>Constructor Detail</h3>
<a name="MurmurHash3v2--">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>MurmurHash3v2</h4>
<pre>public&nbsp;MurmurHash3v2()</pre>
</li>
</ul>
</li>
</ul>
<!-- ============ METHOD DETAIL ========== -->
<ul class="blockList">
<li class="blockList"><a name="method.detail">
<!-- -->
</a>
<h3>Method Detail</h3>
<a name="hash-long:A-long-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hash</h4>
<pre>public static&nbsp;long[]&nbsp;hash(long[]&nbsp;in,
long&nbsp;seed)</pre>
<div class="block">Returns a 128-bit hash of the input.
Provided for compatibility with older version of MurmurHash3,
but empty or null input now returns a hash.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>in</code> - long array</dd>
<dd><code>seed</code> - A long valued seed.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the hash</dd>
</dl>
</li>
</ul>
<a name="hash-int:A-long-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hash</h4>
<pre>public static&nbsp;long[]&nbsp;hash(int[]&nbsp;in,
long&nbsp;seed)</pre>
<div class="block">Returns a 128-bit hash of the input.
Provided for compatibility with older version of MurmurHash3,
but empty or null input now returns a hash.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>in</code> - int array</dd>
<dd><code>seed</code> - A long valued seed.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the hash</dd>
</dl>
</li>
</ul>
<a name="hash-char:A-long-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hash</h4>
<pre>public static&nbsp;long[]&nbsp;hash(char[]&nbsp;in,
long&nbsp;seed)</pre>
<div class="block">Returns a 128-bit hash of the input.
Provided for compatibility with older version of MurmurHash3,
but empty or null input now returns a hash.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>in</code> - char array</dd>
<dd><code>seed</code> - A long valued seed.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the hash</dd>
</dl>
</li>
</ul>
<a name="hash-byte:A-long-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hash</h4>
<pre>public static&nbsp;long[]&nbsp;hash(byte[]&nbsp;in,
long&nbsp;seed)</pre>
<div class="block">Returns a 128-bit hash of the input.
Provided for compatibility with older version of MurmurHash3,
but empty or null input now returns a hash.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>in</code> - byte array</dd>
<dd><code>seed</code> - A long valued seed.</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the hash</dd>
</dl>
</li>
</ul>
<a name="hash-long-long-long:A-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hash</h4>
<pre>public static&nbsp;long[]&nbsp;hash(long&nbsp;in,
long&nbsp;seed,
long[]&nbsp;hashOut)</pre>
<div class="block">Returns a 128-bit hash of the input.
Note the entropy of the resulting hash cannot be more than 64 bits.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>in</code> - a long</dd>
<dd><code>seed</code> - A long valued seed.</dd>
<dd><code>hashOut</code> - A long array of size 2</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the hash</dd>
</dl>
</li>
</ul>
<a name="hash-double-long-long:A-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hash</h4>
<pre>public static&nbsp;long[]&nbsp;hash(double&nbsp;in,
long&nbsp;seed,
long[]&nbsp;hashOut)</pre>
<div class="block">Returns a 128-bit hash of the input.
Note the entropy of the resulting hash cannot be more than 64 bits.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>in</code> - a double</dd>
<dd><code>seed</code> - A long valued seed.</dd>
<dd><code>hashOut</code> - A long array of size 2</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the hash</dd>
</dl>
</li>
</ul>
<a name="hash-java.lang.String-long-long:A-">
<!-- -->
</a>
<ul class="blockList">
<li class="blockList">
<h4>hash</h4>
<pre>public static&nbsp;long[]&nbsp;hash(<a href="https://docs.oracle.com/javase/8/docs/api/java/lang/String.html?is-external=true" title="class or interface in java.lang">String</a>&nbsp;in,
long&nbsp;seed,
long[]&nbsp;hashOut)</pre>
<div class="block">Returns a 128-bit hash of the input.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>in</code> - a String</dd>
<dd><code>seed</code> - A long valued seed.</dd>
<dd><code>hashOut</code> - A long array of size 2</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the hash</dd>
</dl>
</li>
</ul>
<a name="hash-org.apache.datasketches.memory.Memory-long-long-long-long:A-">
<!-- -->
</a>
<ul class="blockListLast">
<li class="blockList">
<h4>hash</h4>
<pre>public static&nbsp;long[]&nbsp;hash(org.apache.datasketches.memory.Memory&nbsp;mem,
long&nbsp;offsetBytes,
long&nbsp;lengthBytes,
long&nbsp;seed,
long[]&nbsp;hashOut)</pre>
<div class="block">Returns a 128-bit hash of the input as a long array of size 2.</div>
<dl>
<dt><span class="paramLabel">Parameters:</span></dt>
<dd><code>mem</code> - The input Memory. Must be non-null and non-empty.</dd>
<dd><code>offsetBytes</code> - the starting point within Memory.</dd>
<dd><code>lengthBytes</code> - the total number of bytes to be hashed.</dd>
<dd><code>seed</code> - A long valued seed.</dd>
<dd><code>hashOut</code> - the size 2 long array for the resulting 128-bit hash</dd>
<dt><span class="returnLabel">Returns:</span></dt>
<dd>the hash.</dd>
</dl>
</li>
</ul>
</li>
</ul>
</li>
</ul>
</div>
</div>
<!-- ========= END OF CLASS DATA ========= -->
<!-- ======= START OF BOTTOM NAVBAR ====== -->
<div class="bottomNav"><a name="navbar.bottom">
<!-- -->
</a>
<div class="skipNav"><a href="#skip.navbar.bottom" title="Skip navigation links">Skip navigation links</a></div>
<a name="navbar.bottom.firstrow">
<!-- -->
</a>
<ul class="navList" title="Navigation">
<li><a href="../../../../overview-summary.html">Overview</a></li>
<li><a href="package-summary.html">Package</a></li>
<li class="navBarCell1Rev">Class</li>
<li><a href="class-use/MurmurHash3v2.html">Use</a></li>
<li><a href="package-tree.html">Tree</a></li>
<li><a href="../../../../deprecated-list.html">Deprecated</a></li>
<li><a href="../../../../index-all.html">Index</a></li>
<li><a href="../../../../help-doc.html">Help</a></li>
</ul>
</div>
<div class="subNav">
<ul class="navList">
<li><a href="../../../../org/apache/datasketches/hash/MurmurHash3Adaptor.html" title="class in org.apache.datasketches.hash"><span class="typeNameLink">Prev&nbsp;Class</span></a></li>
<li><a href="../../../../org/apache/datasketches/hash/XxHash.html" title="class in org.apache.datasketches.hash"><span class="typeNameLink">Next&nbsp;Class</span></a></li>
</ul>
<ul class="navList">
<li><a href="../../../../index.html?org/apache/datasketches/hash/MurmurHash3v2.html" target="_top">Frames</a></li>
<li><a href="MurmurHash3v2.html" target="_top">No&nbsp;Frames</a></li>
</ul>
<ul class="navList" id="allclasses_navbar_bottom">
<li><a href="../../../../allclasses-noframe.html">All&nbsp;Classes</a></li>
</ul>
<div>
<script type="text/javascript"><!--
allClassesLink = document.getElementById("allclasses_navbar_bottom");
if(window==top) {
allClassesLink.style.display = "block";
}
else {
allClassesLink.style.display = "none";
}
//-->
</script>
</div>
<div>
<ul class="subNavList">
<li>Summary:&nbsp;</li>
<li>Nested&nbsp;|&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.summary">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.summary">Method</a></li>
</ul>
<ul class="subNavList">
<li>Detail:&nbsp;</li>
<li>Field&nbsp;|&nbsp;</li>
<li><a href="#constructor.detail">Constr</a>&nbsp;|&nbsp;</li>
<li><a href="#method.detail">Method</a></li>
</ul>
</div>
<a name="skip.navbar.bottom">
<!-- -->
</a></div>
<!-- ======== END OF BOTTOM NAVBAR ======= -->
<p class="legalCopy"><small>Copyright &#169; 2015&#x2013;2021 <a href="https://www.apache.org/">The Apache Software Foundation</a>. All rights reserved.</small></p>
</body>
</html>