Вы можете загружать файлы цитат по требованию и кэшировать их цитаты для использования в одном сеансе, например ::
.
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 [], содержащей имена людей - это еще один вариант, если у вас достаточно памяти. Получение конкретной цитаты из такой структуры было бы просто случаем с использованием заданных чисел в виде индексов массива (выполняя выборку диапазона по ходу дела).