Пакет 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 = {"Строка 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 = new StringTokenizer(toParse,";");
            while(st.hasMoreTokens()){
                System.out.println(st.nextToken());
            }
        }
    }
    
    word1
    word2
    word3
    word4 
    
  • Класс 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 рекомендуется использовать в многоязыковой среде. С помощью этого класса легко манипулировать, наборами ресурсов зависящих от локалей, легко их менять, добавлять новые и т.д.
  Рейтинг@Mail.ru