Пакет java.util
Java включает большое количество вспомогательных классов, широко используемых в других встроенных пакетах Java.
Эти классы расположены в пакете java.util и используются для работы с набором объектов, взаимодействия
с системными функциями низкого уровня, для работы с математическими функциями, генерации случайных чисел и
манипуляций с датой и временем :
- Класс Date имеет два конструктора : первый не имеет параметров и присваивает объекту текущую дату и
время, второй устанавливает их с помощью задания в параметре количества миллисекунд, прошедших с 1.1.70. Имеет
основные методы after, before, clone, getTime и setTime.
- Класс Calendar абстрактный, не содержит конструкторов. Существует конкретная реализация этого класса
GregorianCalendar. Класс включает множество констант, содержащих текущую дату и время (DAY, HOUR и др.), названия
месяцев (в английской аббревиатуре). Вот несколько методов этого класса :
- clone — копирование объекта;
- get — получение значения какой-либо константы;
- getInstance — получение Calendar-объекта;
- getTime — получение времени;
- getTimeZone — получение часового пояса;
- set — определение значения даты и времени для объекта;
- setTime — определение времени;
- setTimeZone — определение часового пояса.
- Класс GregorianCalendar расширяет класс Calendar и используется для установки даты и времени с учетом
текущего часового пояса и региона. В конструкторах можно указывать дату и время в разных вариациях. Можно
также указывать регион и часовой пояс в виде объектов Locale и TimeZone соответственно.
- Класс TimeZone позволяет установить отклонение от времени по Гринвичу. Есть множество методов этого
класса, вот лишь три из них:
- getDefault — получение заданного по умолчанию часового пояс;
- getTimeZone — возвращает объект согласно значению параметра, в котором указывается наименование часового
пояса;
- setDefault — определение задаваемого по умолчанию часового пояса.
- Интерфейс Collection является основой всей иерархии классов-коллекций и
определяет базовую функциональность любой коллекции - набор методов которые позволяют добавлять, удалять, выбирать
элементы коллекции. Классы которые имплементируют интерфейс Collection, могут содержать дубликаты и пустые (null)
значения. AbstractCollection, являясь абстрактным классом обеспечивает, служит основой для создания конкретных классов
коллекций и содержит реализацию некоторых методов определенных в интерфейсе Collection.
- Интерфейс Set расширяет интерфейс Collection. Классы которые реализуют этот интерфейс
не разрешают наличие дубликатов. В коллекции этого типа допускается наличие только одной ссылки типа null. Любой
объект добавляемый в Set должен реализовать метод equals для того, что бы его можно было сравнить с другими.
AbstractSet являясь абстрактным классом представляет из себя основу для реализации различных вариантов интерфейса
Set.
- Интерфейс List расширяет интерфейс Collection. Классы которые реализуют этот интерфейс содержат упорядоченную
последовательность объектов (Объекты хранятся в том порядке в котором они были добавлены). List обеспечивает также
ListIterator, который позволяет перемещаться как вперед, так и назад, по элементам списка. AbstractList являясь
абстрактным классом представляет из себя основу для реализации различных вариантов интерфейса List.
- Интерфейс Map не расширяет интерфейс Collection. Классы, реализующие этот интерфейс,
хранят неупорядоченный набор объектов парами типа ключ/значение. Каждый ключ должен быть уникальным. Порядок
следования пар ключ/значение не определен. AbstractMap являясь абстрактным классом представляет из себя основу
для реализации различных вариантов интерфейса Map.
- Интерфейс SortedSet расширяет Set требуя, чтобы содержимое набора было упорядочено. Объект, имплементирующий
SortedSet, содержит объекты, которые реализуют интерфейс Comparator или могут сравниваться с использованием внешнего
объекта, реализующего интерфейс Comparator.
- Интерфейс Iterator. В Java 1 для перебора элементов коллекции
использовался интерфейс Enumeration. В Java 2 для этих целей должны использоваться объекты, реализующие интерфейс
Iterator. Все классы, которые реализуют интерфейс, Collection, должны реализовать метод iterator, возвращающий объект,
реализующий интерфейс Iterator. Iterator имеет сходство с Enumeration, с тем лишь отличием, что в нем определен метод
remove, который позволяет удалить объект из коллекции, для которой Iterator бы создан.
- Класс Properties предназначен для хранения набора свойств (параметров). Методы String getProperty(String key),
String getProperty(String key, String defaultValue) позволяют получить свойство из набора. С помощью метода
setProperty(String key, String value) это свойство можно установить.
- Интерфейс Comparator. В коллекциях многие методы сортировки или сравнения требуют
передачи в качестве одного из параметров объекта, который реализует интерфейс Comparator. Этот интерфейс определяет
единственный метод compare(Object obj1, Object obj2), который, на основании алгоритма определенного пользователем,
сравнивает объекты переданные в качестве параметров.
- Класс Arrays является статическим и обеспечивает набор методов для выполнения таких операций над массивами, как
поиск, сортировка, сравнение. В Arrays так же определен статический метод public List aList(a[] data); который возвращает
список фиксированного размера основанный на массиве. Изменения в List можно внести изменив данные в массиве.
Обратная операция, т.е. представление какой-либо коллекции в виде массива осуществляется с помощью статического метода
Object[] toArray() определенного в классе Collections.
public class TestArrays
{
String[] data;
data = {"Строка 1","Строка 4","Строка 2","Строка 3"};
public TestArrays() {}
void dumpArray(String[] data){
System.out.println();
for(int cnt = 0; cnt < data.length; cnt++)
System.out.println(data[cnt]);
}
public static void main(String[] args) {
Test test = new Test();
test.dumpArray(data);
Arrays.sort(data);
test.dumpArray(data);
int idx = Arrays.binarySearch(data, "Строка 4");
System.out.println("Индекс записи \"Строка 4\" = "
+ idx);
}
}
- Класс StringTokenizer предназначен для разбора строки по лексемам (tokens).
Строка, которую необходимо разобрать, передается конструктору StringTokenizer(String str) в качестве параметра.
Определено еще два перегруженных конструктора, которым дополнительно можно передать строку-разделитель лексем
StringTokenizer(String str, String delim) и признак возврата разделителя лексем StringTokenizer(String str,
String delim, Boolean retirnDelims). Разделителем лексем по умолчанию служит пробел.
public class TestStringTokenizer
{
public TestStringTokenizer() {}
public static void main(String[] args)
{
Test test = new Test();
String toParse = "word1;word2;word3;word4";
StringTokenizer st;
st = new StringTokenizer(toParse,";");
while(st.hasMoreTokens()){
System.out.println(st.nextToken());
}
}
}
- Класс Random используется для получения последовательности псевдослучайных чисел.
Если для инициализации Random использовать одно и то же число, будет получена одна и та же
последовательность псевдослучайных чисел.
В классе Random определено также несколько методов, которые возвращают псевдослучайные
величины для примитивных типов Java. Дополнительно следует отметить наличие двух методов double
nextGaussian() - возвращает случайное число в диапазоне от 0.0 до 1.0 распределенное по нормальному
закону, а void nextBytes(byte[] arr) - заполняет массив arr случайными величинами типа byte.
public class TestRandom
{
public TestRandom() { }
void dumpArray(String[] data){
System.out.println();
for(int cnt = 0; cnt < data.length; cnt++)
System.out.println(data[cnt]);
}
public static void main(String[] args)
{
Random r = new Random(100);
for(int cnt = 0; cnt < 9; cnt++)
System.out.print(r.nextInt() + " ");
System.out.println();
r = new Random(100);
for(int cnt = 0; cnt < 9; cnt++)
System.out.print(r.nextInt() + " ");
byte[] randArray = new byte[8];
r.nextBytes(randArray);
Test test = new Test();
test.dumpArray(randArray);
}
}
- Класс Locale предназначен для отображения информации согласно стандарту определенного
региона. Под регионом принято понимать не только географическое положение, но также и языковую среду. Так, например,
для Швейцарии можно указать как французский язык или немецкий. Определено два варианта конструкторов
в классе Locale
Locale(String language, String country)
Locale(String language, String country, String variant)
- Класс ResourceBundle является абстрактным и предназначен для хранения
объектов, специфичных для Locale. Использование ResourceBundle рекомендуется использовать в многоязыковой среде. С
помощью этого класса легко манипулировать, наборами ресурсов зависящих от локалей, легко их менять, добавлять новые
и т.д.
|