CINXE.COM
hashCode property - Object class - dart:core library - Dart API
<!DOCTYPE html> <html lang="en"> <head> <meta charset="utf-8"> <meta http-equiv="X-UA-Compatible" content="IE=edge"> <meta name="viewport" content="width=device-width, height=device-height, initial-scale=1, user-scalable=no"> <meta name="description" content="API docs for the hashCode property from the Object class, for the Dart programming language."> <title>hashCode property - Object class - dart:core library - Dart API</title> <link rel="canonical" href="https://api.dart.dev/dart-core/Object/hashCode.html"> <link rel="preconnect" href="https://fonts.gstatic.com"> <link href="https://fonts.googleapis.com/css2?family=Roboto+Mono:ital,wght@0,300;0,400;0,500;0,700;1,400&display=swap" rel="stylesheet"> <link href="https://fonts.googleapis.com/css2?family=Material+Symbols+Outlined:opsz,wght,FILL,GRAD@24,400,0,0" rel="stylesheet"> <link rel="stylesheet" href="../../static-assets/github.css?v1"> <link rel="stylesheet" href="../../static-assets/styles.css?v1"> <link rel="icon" href="../../static-assets/favicon.png?v1"> <!-- Google tag (gtag.js) --> <script async src="https://www.googletagmanager.com/gtag/js?id=G-VVQ8908SJ5"></script> <script> window.dataLayer = window.dataLayer || []; function gtag(){dataLayer.push(arguments);} gtag('js', new Date()); gtag('config', 'G-VVQ8908SJ5'); </script> <link rel="preconnect" href="https://fonts.googleapis.com"> <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> <link rel="preload" href="https://fonts.googleapis.com/css2?family=Google+Sans+Text:wght@400&family=Google+Sans:wght@500&display=swap" as="style"> <link rel="stylesheet" href="https://fonts.googleapis.com/css2?family=Google+Sans+Text:wght@400&family=Google+Sans:wght@500&display=swap"> <link rel="stylesheet" href="https://www.gstatic.com/glue/cookienotificationbar/cookienotificationbar.min.css"> </head> <body data-base-href="../../" data-using-base-href="false" class="light-theme"> <div id="overlay-under-drawer"></div> <header id="title"> <span id="sidenav-left-toggle" class="material-symbols-outlined" role="button" tabindex="0">menu</span> <ol class="breadcrumbs gt-separated dark hidden-xs"> <li><a href="../../index.html">Dart</a></li> <li><a href="../../dart-core/dart-core-library.html">dart:core</a></li> <li><a href="../../dart-core/Object-class.html">Object</a></li> <li class="self-crumb">hashCode property</li> </ol> <div class="self-name">hashCode</div> <form class="search navbar-right" role="search"> <input type="text" id="search-box" autocomplete="off" disabled class="form-control typeahead" placeholder="Loading search..."> </form> <div class="toggle" id="theme-button" title="Toggle brightness"> <label for="theme"> <input type="checkbox" id="theme" value="light-theme"> <span id="dark-theme-button" class="material-symbols-outlined"> dark_mode </span> <span id="light-theme-button" class="material-symbols-outlined"> light_mode </span> </label> </div> </header> <main> <div id="dartdoc-main-content" class="main-content" data-above-sidebar="dart-core/Object-class-sidebar.html" data-below-sidebar=""> <div> <div id="external-links" class="btn-group"><a title="View source code" class="source-link" href="https://github.com/dart-lang/sdk/blob/88c9758ef131d430d8ce595c6bfb4c90574d3ddd/sdk/lib/core/object.dart#L86"><span class="material-symbols-outlined">description</span></a></div> <h1><span class="kind-property">hashCode</span> property </h1></div> <section id="getter"> <section class="multi-line-signature"> <span class="returntype"><a href="../../dart-core/int-class.html">int</a></span> <span class="name ">hashCode</span> </section> <section class="desc markdown"> <p>The hash code for this object.</p> <p>A hash code is a single integer which represents the state of the object that affects <a href="../../dart-core/Object/operator_equals.html">operator ==</a> comparisons.</p> <p>All objects have hash codes. The default hash code implemented by <a href="../../dart-core/Object-class.html">Object</a> represents only the identity of the object, the same way as the default <a href="../../dart-core/Object/operator_equals.html">operator ==</a> implementation only considers objects equal if they are identical (see <a href="../../dart-core/identityHashCode.html">identityHashCode</a>).</p> <p>If <a href="../../dart-core/Object/operator_equals.html">operator ==</a> is overridden to use the object state instead, the hash code must also be changed to represent that state, otherwise the object cannot be used in hash based data structures like the default <a href="../../dart-core/Set-class.html">Set</a> and <a href="../../dart-core/Map-class.html">Map</a> implementations.</p> <p>Hash codes must be the same for objects that are equal to each other according to <a href="../../dart-core/Object/operator_equals.html">operator ==</a>. The hash code of an object should only change if the object changes in a way that affects equality. There are no further requirements for the hash codes. They need not be consistent between executions of the same program and there are no distribution guarantees.</p> <p>Objects that are not equal are allowed to have the same hash code. It is even technically allowed that all instances have the same hash code, but if clashes happen too often, it may reduce the efficiency of hash-based data structures like <a href="../../dart-collection/HashSet-class.html">HashSet</a> or <a href="../../dart-collection/HashMap-class.html">HashMap</a>.</p> <p>If a subclass overrides <a href="../../dart-core/Object/hashCode.html">hashCode</a>, it should override the <a href="../../dart-core/Object/operator_equals.html">operator ==</a> operator as well to maintain consistency.</p> </section> <section class="summary source-code" id="source"> <h2><span>Implementation</span></h2> <pre class="language-dart"><code class="language-dart">external int get hashCode;</code></pre> </section> </section> </div> <!-- /.main-content --> <div id="dartdoc-sidebar-left" class="sidebar sidebar-offcanvas-left"> <!-- The search input and breadcrumbs below are only responsively visible at low resolutions. --> <header id="header-search-sidebar" class="hidden-l"> <form class="search-sidebar" role="search"> <input type="text" id="search-sidebar" autocomplete="off" disabled class="form-control typeahead" placeholder="Loading search..."> </form> </header> <ol class="breadcrumbs gt-separated dark hidden-l" id="sidebar-nav"> <li><a href="../../index.html">Dart</a></li> <li><a href="../../dart-core/dart-core-library.html">dart:core</a></li> <li><a href="../../dart-core/Object-class.html">Object</a></li> <li class="self-crumb">hashCode property</li> </ol> <h5>Object class</h5> <div id="dartdoc-sidebar-left-content"></div> </div><!--/.sidebar-offcanvas--> <div id="dartdoc-sidebar-right" class="sidebar sidebar-offcanvas-right"> </div><!--/.sidebar-offcanvas--> </main> <footer> <span class="no-break"> Dart 3.5.4 </span> <span class="glue-footer"> <span class="no-break"> | <a href="https://dart.dev/terms" title="Terms of use">Terms</a> </span> <span class="no-break"> | <a href="https://policies.google.com/privacy" target="_blank" rel="noopener" title="Privacy policy" class="no-automatic-external">Privacy</a> </span> <span class="no-break"> | <a href="https://dart.dev/security" title="Security philosophy and practices">Security</a> </span> <div class="copyright" style="font-size: 0.9em; color: darkgrey; margin-top: 0.5em;"> Except as otherwise noted, this site is licensed under a <a style="color: darkgrey;" href="https://creativecommons.org/licenses/by/4.0/"> Creative Commons Attribution 4.0 International License</a> and code samples are licensed under the <a style="color: darkgrey;" href="https://opensource.org/licenses/BSD-3-Clause" class="no-automatic-external"> 3-Clause BSD License</a> </div> </span> </footer> <script src="../../static-assets/highlight.pack.js?v1"></script> <script src="../../static-assets/docs.dart.js"></script> <button aria-hidden="true" class="glue-footer__link glue-cookie-notification-bar-control"> Cookies management controls </button> <script src="https://www.gstatic.com/glue/cookienotificationbar/cookienotificationbar.min.js" data-glue-cookie-notification-bar-category="2B"> </script> </body> </html>