Главная » Java » Прикладные методы Java

0

В составе класса String есть два метода, полезных для использования в специальных приложениях. Один из них носит название hashCode и возвращает хеш-код объекта на основании содержимого строки. Любые две строки с одинаковым содержимым будут обладать совпадающими хеш-кодами, хотя один и тот же хеш-код может быть вычислен и для различных строк. Хеш-коды объектов находят применение в классах коллекций – таких как класс HashMap из пакета java.util, который мы рассмотрим в разделе 16.7.1 на странице 455.

Другой прикладной метод класса String, достойный внимания, – это intern, возвращающий новую строку с тем же содержимым, что и в текущем объекте String. Любые два объекта String с одинаковым содержимым возвращают посредством метода intern в точности тот же объект String – это позволяет существенно быстрее сопоставлять "внутренности" объектов, сравнивая ссылки на них. Рассмотрим пример:

/ / …

 

String[] table;

 

// инициализация элементов массива table посредством вызовов

 intern int tableCurrentSize = … // Сколько элементов проинициализировано

/ / …

int putIn(string key) {

String unique = key.intern();

int i;

// проверяем, присутствует ли unique в table …

for (; = о; i < tableCurrentsize; i++)

if (table[i] == unique)

return i;

// ЕСЛИ нет, добавляем unique в table

 table[i] = unique;

tableCurrentSize++;

return i;

}

Массив tablе просматривается в поисках строки, которая была получена в результате вызова метода intern в объекте другой строки, обладающей тем же содержимым, что и key. Если такая строка найдена, поиск завершается. Если же результат поиска отрицателен, значение unique, полученное при вызове key. intern (), сохраняется в массиве. Использование при сравнении строк результатов вызовов метода intern равносильно непосредственному сопоставлению содержимого строк, но выполняется значительно быстрее.

Источник: Арнолд, Кен, Гослинг, Джеймс, Холмс, Дэвид. Язык программирования Java. 3-е изд .. : Пер. с англ. – М. : Издательский дом «Вильяме», 2001. – 624 с. : ил. – Парал. тит. англ.

По теме:

  • Комментарии