2014-11-19 4 views
0

Я знаю, что мог бы пройти цикл for, подобный этому (см. Код), и я также мог бы добавить в массив таким же образом, но есть более быстрый способ. Я не хочу использовать какой-либо другой API java, поскольку я хочу практиковать массив. Будет ли использование хеш-функции позволять мне быстрее сохранять мои переменные, а затем быстрее найти определенное слово?Самый быстрый способ хранения и доступа к строкам в массиве

редактировать: Проблема в том, при использовании слов 10,000 задержка увеличивает больше, чем 1ms

Спасибо :)

int count = 0; 
for(int i = 0; i < array.length; i++) 
    if(array[i].equals(word)) 
     count++; 

ответ

0

Всякий раз, когда ваша обработка 10000 слов вы можете ожидать некоторые задержки. В зависимости от того, какое слово настроено для вас, вы можете фильтровать немного лучше, но насколько ваш код показывает, что это лучший способ сделать это.

1

Вы можете использовать 2 одномерный массив:

Array [алфавит] [Слова, начинающиеся с этим алфавитом]

+0

Это очень упрощенная версия хэш-карты. Хеш-функция использования первой буквы не очень хорошая, но если вы не можете использовать хэш-карту напрямую, это не так уж плохо. –

+0

Добавление в 2-мерный массив увеличило бы время, потому что мне понадобилось бы два для петель правильно? – Kingsta1993

+0

да, вы правы, но парень хотел использовать и практиковать только массивы, поэтому я ответил с этим ответом :) –

1

Вы можете предварительно сортировке массив, а затем использовать поиск двоично-Чоп на нем. Это было бы полезно, если бы вы искали много слов.

Если вы разрешаете другие структуры, то вы обычно можете достичь O(1) времени поиска.