Но это так. Этот метод называется clone()
и реализован в классе Object
.
То, что вы хотите сделать, может быть достигнуто с помощью следующего:
MyClass obj = new MyClass();
MyClass copy = (MyClass) obj.clone();
Нормальный способ сделать быстрая подстрока, соответствующая, должна создать структуру данных, которые содержат все суффиксы всех строк, Вы хотите поиск. В зависимости от организации это можно назвать "суффиксным деревом" или "суффиксным массивом". Например, если у Вас есть 1 000 строк, и все - 50 символов в длину, у Вас есть нетривиальные суффиксы 1.000 x 50, т.е. Ваш суффиксный массив имел бы 50 000 записей.
Затем, чтобы сделать соответствие, Вы делаете двоичный поиск (если массив) или поиск по дереву (если дерево) для нахождения всех тех суффиксов в структуре данных чей начало соответствия строка записанный в поле поиска. Поскольку это - начало суффикса, которому Вы соответствуете, можно использовать стандартные поисковые процедуры (двоичный поиск, древовидный спуск) для получения до результата быстро. Каждый суффикс связан с теми строками, в которых это появляется.
Пример: у Вас есть две строки "CAT" и "ТОЧКА". Ваш суффиксный массив похож на это (отметьте lexiographic = алфавитное упорядочивание):
#1 AT --> CAT
#2 CAT --> CAT
#3 DOT --> DOT
#4 OT --> DOT
#5 T --> DOT, CAT
Примечание, что существует шесть суффиксов, но два из того же (длятся "T" в "CAT" и "ТОЧКЕ"), и обоих представленных той же записью (#5).
Теперь, когда пользователь вводит в поиске, например, "OT" (который должен соответствовать "ТОЧКЕ"), можно выполнить в простом lexiographic упорядочивание поиска, разового журналом, поскольку Вы теперь ищете начало соответствие в суффиксном массиве.
Это - основной принцип быстрого текстового поиска, когда шаблон поиска не содержит подстановочные знаки.
awesomebar предлагает URL алгоритмом, названным Места frecency алгоритм .
Согласно веб-сайту разработчика Mozilla:
слово "frecency" само является комбинацией слов "частота" и "новизна".
Я думаю, что это оставляют базовой системе хранения: База данных SQLite, где Firefox хранит Страницы, Вы посетили, предлагает быструю функцию для сравнения подстроки.
я думаю, что Firefox выпускает SQL-запрос к Базе данных. Это довольно быстро, потому что база данных кэшируется в Вашей памяти.
Алгоритм адресной строки в Firefox 3.0 немного сложен. Он будет получать данные из двух (трех для Firefox 3.5 и более поздних версий) разных запросов:
Для первого запроса он проверяет таблицу moz_inputhistory, чтобы увидеть, хранится ли в этой таблице текущая строка поиска. Эти результаты отсортированы по «рангу», который является числом, определяющим, как давно он используется. Это число уменьшается раз в день. Этот поиск делает адресную строку адаптируемой к тому, что вы выбираете с течением времени (реализовано в ошибке 95739 ).
В Firefox 3.5 и более поздних версиях он затем проверяет таблицу moz_keyword на наличие закладок с ключевым словом, которое соответствует текст поиска точно.
Последний запрос, он проходит через каждую запись в moz_places, которая будет включать в себя все посещения истории и закладки. Эти результаты упорядочены по частоте .
Для всех трех из этих случаев используется следующий алгоритм для сопоставления с тегами, заголовком и URL-адресом (ниже называется «текст с возможностью поиска»). Это немного сложно объяснить словами, поэтому может быть проще посмотреть исходный код .
Надеюсь, это объясняет это понятным образом!