Лучший способ хранить и получать доступ к 120000 слов в Java - PullRequest
6 голосов
/ 06 февраля 2009

Я программирую Java-приложение, которое читает только текстовые файлы (.txt). Эти файлы могут содержать более 120000 слов.

Приложение должно хранить все +120 000 слов. Ему нужно назвать их word_1, word_2 и т. Д. И ему также нужно получить доступ к этим словам, чтобы выполнять с ними различные методы.

Все методы связаны со строками. Например, будет вызван метод для определения количества букв в word_80. Будет вызван другой метод, чтобы сказать, какие именно буквы есть в word_2200.

Кроме того, некоторые методы будут сравнивать два слова. Например, будет вызван метод для сравнения word_80 с word_2200, и его необходимо вернуть, у которого больше букв. Для сравнения word_80 с word_2200 будет вызван другой метод, который должен возвращать конкретные буквы, которые разделяют оба слова.

Мой вопрос: поскольку я работаю почти исключительно со строками, лучше ли хранить эти слова в одном большом ArrayList? Несколько маленьких ArrayLists? Или я должен использовать одну из многих других возможностей хранения, таких как Векторы, HashSets, LinkedLists?

Мои две основные проблемы: 1.) скорость доступа и 2.) наличие в моем распоряжении максимально возможного количества предварительно созданных методов.

Заранее спасибо за помощь !!


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

Пожалуйста, прости меня за любую нечеткость; и позвольте мне ответить на ваши вопросы:

  1. Q) Английский?
    А) Текстовые файлы на самом деле книги, написанные на английском языке. Появление слова на втором языке будет редким, но не невозможным. Я бы поставил процент неанглоязычных слов в текстовых файлах на 0,0001%

  2. Q) Домашнее задание?
    А) Я с улыбкой смотрю на формулировку своего вопроса сейчас. Да, это похоже на школьное задание. Но нет, это не домашнее задание.

  3. Q) Дубликаты?
    А) да. И, вероятно, каждые пять или около того слов с учетом союзов, статей и т. Д.

  4. Q) Доступ?
    А) И случайные, и последовательные. Конечно, возможно, что метод найдет слово в случайном порядке. В равной степени возможно, что метод захочет последовательно найти подходящее слово между word_1 и word_120000. Что приводит к последнему вопросу ...

  5. Q) Перебирать весь список?
    А) Да.

Кроме того, я планирую расширить эту программу для выполнения многих других методов над словами. Я снова прошу прощения за мою нечеткость. (Детали действительно имеют значение, не так ли?)

Ура!

Ответы [ 11 ]

0 голосов
/ 06 февраля 2009

Использовать Hashtable ? Это даст вам лучшую скорость поиска.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...