0 added
0 removed
Original
2026-01-01
Modified
2026-03-10
1
<p>Теги: java, object, system.nanotime(), hashset, arraylist, linkedlist, java developer, override</p>
1
<p>Теги: java, object, system.nanotime(), hashset, arraylist, linkedlist, java developer, override</p>
2
<p><em>"Название Hash происходит от понятия хэш-функция. Хэш-функция - это функция, сужающая множество значений объекта до некоторого подмножества целых чисел. Класс<strong>Object</strong>имеет метод<strong>hashCode()</strong>, который используется классом<strong>HashSet</strong>для эффективного размещения объектов, заносимых в коллекцию. В классах объектов, заносимых в<strong>HashSet</strong>, этот метод должен быть переопределен (<strong>override</strong>)."</em>- информация с<a>сайта</a>Александра Климова.</p>
2
<p><em>"Название Hash происходит от понятия хэш-функция. Хэш-функция - это функция, сужающая множество значений объекта до некоторого подмножества целых чисел. Класс<strong>Object</strong>имеет метод<strong>hashCode()</strong>, который используется классом<strong>HashSet</strong>для эффективного размещения объектов, заносимых в коллекцию. В классах объектов, заносимых в<strong>HashSet</strong>, этот метод должен быть переопределен (<strong>override</strong>)."</em>- информация с<a>сайта</a>Александра Климова.</p>
3
<h2>А сколько времени нужно, чтобы найти элемент в<strong>HashSet</strong>?</h2>
3
<h2>А сколько времени нужно, чтобы найти элемент в<strong>HashSet</strong>?</h2>
4
<p>Правильный ответ - константное время, конечно при хорошей hash-функции. А в секундах это сколько? Хотя бы по-порядку. Понятно, что сколько-то наносекунд, может быть микросекунд. В разных условиях и каждый раз по разному.</p>
4
<p>Правильный ответ - константное время, конечно при хорошей hash-функции. А в секундах это сколько? Хотя бы по-порядку. Понятно, что сколько-то наносекунд, может быть микросекунд. В разных условиях и каждый раз по разному.</p>
5
<p>Сложно это померить? Нет, совсем не сложно. Засекаем<strong>System.nanoTime()</strong>до и после поиска и смотрим разницу. Каждый может это сделать. Вот и мы сделали. Поискали несколько раз и получили в среднем 1 микросекунду.</p>
5
<p>Сложно это померить? Нет, совсем не сложно. Засекаем<strong>System.nanoTime()</strong>до и после поиска и смотрим разницу. Каждый может это сделать. Вот и мы сделали. Поискали несколько раз и получили в среднем 1 микросекунду.</p>
6
<h2>А если поискать в списке, то какое время?</h2>
6
<h2>А если поискать в списке, то какое время?</h2>
7
<p>И тут правильный ответ - за линейное. Ну а если в секундах? Мы проверили, создали<strong>ArrayList</strong>с числами от 0 до 9 999 999 в порядке возрастания и поискали… число "0". Нашли сразу. Искали 1 микросекунду. И тоже самое проверили в<strong>LinkedList</strong>. И тоже 1 микросекунда. И нам не настолько важна величина, как то, что искали мы значение одно и тоже время.</p>
7
<p>И тут правильный ответ - за линейное. Ну а если в секундах? Мы проверили, создали<strong>ArrayList</strong>с числами от 0 до 9 999 999 в порядке возрастания и поискали… число "0". Нашли сразу. Искали 1 микросекунду. И тоже самое проверили в<strong>LinkedList</strong>. И тоже 1 микросекунда. И нам не настолько важна величина, как то, что искали мы значение одно и тоже время.</p>
8
<h2>А если поискать 9_999_999?</h2>
8
<h2>А если поискать 9_999_999?</h2>
9
<p>Понятно, что в<strong>HashSet</strong>будет константное время. А в<strong>ArrayList</strong>? А в<strong>LinkedList</strong>? В<strong>ArrayList</strong>искали 10 миллисекунд. В 10 000 раз дольше, чем в<strong>HashSet</strong>. Как вы думаете в<strong>LisnkedList</strong>искать дольше? Насколько?</p>
9
<p>Понятно, что в<strong>HashSet</strong>будет константное время. А в<strong>ArrayList</strong>? А в<strong>LinkedList</strong>? В<strong>ArrayList</strong>искали 10 миллисекунд. В 10 000 раз дольше, чем в<strong>HashSet</strong>. Как вы думаете в<strong>LisnkedList</strong>искать дольше? Насколько?</p>
10
<p><em>Ответ напишите в комментариях!</em></p>
10
<p><em>Ответ напишите в комментариях!</em></p>
11
11