собственно двумерный массив, содержащий ресурсы.
Рассмотрим пример:
public class MyResource extends ListResourceBundle { Vector v = new Vector(); Object[][] resources = { {'StringKey','String'}, {'DoubleKey',new Double(0.0)}, {'VectorKey',v}, }; public MyResource() { super(); v.add('Element 1'); v.add('Element 2'); v.add('Element 3'); } protected Object[][] getContents() { return resources; } } public class Test { public Test() { } public static void main(String[] args) { Test test = new Test(); ResourceBundle rb = ResourceBundle.getBundle('experiment.MyResource',Locale.getDefault()); Vector v = (Vector)rb.getObject('VectorKey'); Iterator it = v.iterator(); while(it.hasNext()) { System.out.println(it.next()); } } } Пример 14.32.
Результатом будет:
Element 1 Element 2 Element 3
Создание ресурсов для локалей, отличных от локали по умолчанию, осуществляется так же, как было показано для ResourceBundle.
Заключение
В этой лекции были рассмотрены вспомогательные классы пакета java.util. Как можно было заметить, они относятся к самым разным задачам, а потому редкая программа обходится без использования хотя бы одного класса этого пакета.
Напомним кратко все основные классы и их особенности:
Для работы с датой и временем должны использоваться классы Date, Calendar. Класс Calendar абстрактный, существует конкретная реализация этого класса GregorianCalendar.
Интерфейс Observer и класс Observable реализуют парадигму MVC и предназначены для уведомления одного объекта об изменении состояния другого.
Коллекции ( Collections ) не накладывают ограничений на порядок следования и дублирование элементов.
Списки ( List ) поддерживают порядок элементов (управляются либо самими данными, либо внешними алгоритмами).
Наборы ( Set ) не допускают дублированных элементов.
Карты ( Maps ) используют уникальные ключи для поиска содержимого.
Применение массивов делает добавление, удаление и увеличение количества элементов затруднительным.
Использование связанных списков ( LinkedList ) обеспечивает хорошую производительность при вставке, удалении элементов, но снижает скорость индексированного доступа к ним.
Использование деревьев ( Tree ) облегчает вставку, удаление и увеличение размера хранилища, снижает скорость индексированного доступа, но увеличивает скорость поиска.
Применение хэширования облегчает вставку, удаление и увеличение размера хранилища, снижает скорость индексированного доступа, но увеличивает скорость поиска. Однако хэширование требует наличия уникальных ключей для запоминания элементов данных.
Класс Properties удобен для хранения наборов параметров в виде пар ключ/значение. Параметры могут сохраняться в потоки (файлы) и загружаться из них.
Реализация классом интерфейса Comparator позволяет сравнивать экземпляры класса друг с другом и, соответственно, сортировать их, например, в коллекциях.
Arrays является классом-утилитой и обеспечивает набор методов, реализующих различные приемы работы с массивами. Не имеет конструктора.
StringTokenizer - вспомогательный класс, предназначенный для разбора строк на лексемы.
При необходимости работать с сущностями, представленными в виде битовых последовательностей, удобно использовать класс BitSet.
Манипулировать ресурсами, которые различаются в зависимости от локализации, удобно с помощью