Java-более 18000 случаев, я должен использовать switch или if заявление? - PullRequest
0 голосов
/ 28 июня 2011

Я создаю мобильное приложение Java для отображения цитат людей.Он будет иметь более 18000 цитат, классифицированных по количеству цитат.Пользователи моего приложения будут вводить номер человека и номер цитаты для этого человека.(два отдельных номера).Должен ли я использовать вложенный случай переключения или оператор if else?или есть другой способ сделать это?возможно, вместо того, чтобы создавать строки каждой цитаты, создайте текстовые файлы с кавычками (1 текстовый файл на человека) и используйте один регистр переключателя, чтобы получить человека.текстового файла для этого человека?какой метод был бы быстрее и проще для мобильного телефона, на котором он запущен?Заранее спасибо!:)

Ответы [ 3 ]

7 голосов
/ 28 июня 2011

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

Кристина Агилера и я друзья, независимо от того, из чего состоит СМИ.

Не относись ко мне как к маленькой девочке.

Англия - одно из моих любимых мест. Поклонники просто сумасшедшие.

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

Пусть ваша программа найдет файлы из каталога и перечислит имена, после чего файл можно будет загрузить и разбить на строки. Использование базы данных предпочтительнее и будет намного быстрее.

3 голосов
/ 28 июня 2011

Ни того, ни другого.

Используйте базу данных, пожалуйста!Если у вас есть числа (id!), Вы можете быстро найти эту цитату за счет индексов.

1 голос
/ 28 июня 2011

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

.
public class Quotes {
    Hashtable cache;

    public Quotes() {
       cache = new Hashtable();
    }

    public String getQuote(int person, int quoteNumber) {
        if (!cache.containsKey(new Integer(person))) {
           try {
               loadQuoteFile(person);
           } catch (IOException e) {
               // Invalid person / file - do what you will
           }
        }

        String[] quotes = (String[])cache.get(new Integer(person));
        if (quoteNumber < 0) return quotes[0];
        if (quoteNumber >= quotes.length) return quotes[quotes.length - 1];
        return quotes[quoteNumber];
    }

    private void loadQuoteFile(int person) throws IOException {
        String[] quotes;
        // Load the file
        // Parse into strings using linebreaks as the delimiter
        cache.put(new Integer(person), quotes);
    }
}

В любом случае, вам, вероятно, понадобится подход с текстовыми файлами, если вы не заинтересованы в написании или генерации кода для класса, содержащего все данные цитаты, например, String[][], с указанием персоны и номера кавычек в качестве индексов, а также другой String [], содержащей имена людей - это еще один вариант, если у вас достаточно памяти. Получение конкретной цитаты из такой структуры было бы просто случаем с использованием заданных чисел в виде индексов массива (выполняя выборку диапазона по ходу дела).

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