
- •JAVA-ТЕХНОЛОГИЯ
- •Коллекции
- •Интерфейс Collection
- •Расширения интерфейса Collection
- •Реализации интерфейса Collection
- •Реализации интерфейса Collection
- •Цикл for-each и Iterator
- •Цикл for-each и Iterator: примеры[1]
- •Цикл for-each и Iterator: примеры[2]
- •Интерфейс Comparator
- •Карты (Интерфейс Map)
- •Расширения интерфейса Map
- •Реализации интерфейса Map
- •Преобразование карты в
- •Класс Collections
- •Класс Collections
- •Класс Collections: примеры[1]
- •Класс Collections: примеры[2]
- •Класс StringTokenizer
- •Класс StringTokenizer
- •Класс BitSet
- •Класс BitSet
- •Класс Date
- •Класс Calendar
- •Другие классы для работы с датами и часовыми поясами
- •Класс Random
- •Класс Random
- •Класс Observable
- •Класс Timer и TimerTask
- •Класс Timer и TimerTask
- •Класс Formatter
- •Класс Formatter
- •Класс Scanner
- •Другие утилиты пакета java.util

Класс BitSet
Класс для хранения массива битов. Интерпретирует последовательность битов
Содержит специфические методы для работы с такими последовательностями например:
and(BitSet bt) – операция логического «И» между вызывающим объектом и переданным в методе
flip(int startIndex, int endIndex) – обращает все биты в промежутке от startIndex до endIndex
nextSetBit(int startIndex) – позиция первого после startIndex установленного бита(т.е. = 1)
Последовательность битов «мыслится» бесконечной. Можно обращаться к любому биту и устанавливать любой бит
Стандартный метод toString() выводит номера позиций установленных битов, а не сам массив
(C)В.О. Сафонов. 2013

Класс BitSet
BitSet bt1 = new BitSet();
BitSet bt2 = new BitSet();
//bt1 = 11100….. bt1.set(1); bt1.set(2); bt1.set(3);
//bt2 = 01100….. bt2.set(2); bt2.set(3);
//логическое «И» bt1.and(bt2); System.out.println(bt1);
//вывод: - номера установленных битов {2, 3}
(C)В.О. Сафонов. 2013

Класс Date
Класс для хранения дат (число и время)
Даты в Java представляются как кол-во миллисекунд, прошедших с полуночи 1 января 1970 года
Класс Date сильно изменился, начиная с версии JDK 1.0. Теперь практически все методы для работы с датами и их компонентами перенесены в класс Calendar и DateFormat, а в самом Date они объявлены как deprecated (нежелательные)
В классе System(пакет java.lang) есть метод currentTimeMillis(), который возвращает long – текущую дату в миллисекундах
Date date = new Date(); // текущая дата
Date date2 = new Date(989844733); // дата, соответствующая // 989844733 миллисекундам
System.out.println(date); // Mon Feb 16 21:58:08 MSK 2009 System.out.println(date2); // Mon Jan 12 13:57:24 MSK 1970
(C) В.О. Сафонов. 2013

Класс Calendar
Абстрактный класс, позволяющий преобразовывать дату, представленную в миллисекундах, и получать ее отдельные компоненты
Экземпляр класса можно получить методом getInstance()
(C) В.О. Сафонов. 2013

Другие классы для работы с датами и часовыми поясами
GregorianCalendar – реализация Calendar, представляющая Григорианский календарь. Позволяет проверить, например, является ли указанный год високосным (метод isLeapYear())
TimeZone – класс для работы с часовыми поясами. Позволяет вычислить разницу между некоторым часовым поясом и GMT
SimpleTimeZone – работа с часовыми поясами в Григорианском календаре
Locale – предназначен для создания объектов, каждый из которых описывает географический или культурный регион
(C) В.О. Сафонов. 2013

Класс Random
Класс Random генерирует псевдослучайные числа
Требуется задать начальный элемент
При создании с пустым конструктором последовательность инициируется текущим временем(в миллисекундах), но можно указать свое число
Инициировать пустым конструктором более надежно, так как дата в миллисекундах всегда разная
Random r = new Random();
Random r2 = new Random(100)
Можно получать случайные величины типов: boolean, byte, double, float, gaussian, int и long, методами: nextBoolean(), nextByte(), nextDouble() и т.д
Для int существует метод nextInt(int n) – случайное число в диапазоне от 0 до n
(C)В.О. Сафонов. 2013

Класс Random
Random r1 = new Random(); System.out.println(r1.nextBoolean()); // true
Random r2 = new Random(1);
Random r3 = new Random(1);
// получаем одинаковые числа System.out.println(r2.nextInt()); // -1155869325 System.out.println(r3.nextInt()); // -1155869325
(C) В.О. Сафонов. 2013

Класс Observable
Класс служит для создания объектов, за изменениями которых могут следить другие объекты
Объекты, которые используются для отслеживания изменений, должны реализовывать интерфейс Observer
public interface Observer {
void update(Observable o, Object arg);
}
Объект, наследующий класс Observable, содержит список таких подписчиков на изменения и добавляет их методом addObserver(Observer obj)
Когда он считает нужным оповестить наблюдателей об изменении, то вызывает метод notifyObservers() или notifyObservers(Object obj)
(C)В.О. Сафонов. 2013

Класс Timer и TimerTask
Timer – класс, позволяющий запускать задачи в фоновом режиме в заранее запланированные моменты времени, либо с некоторой указанной периодичностью
Задача реализуется в виде наследника абстрактного класса TimerTask и должна реализовывать метод run()
Timer работает в отдельном потоке
//конкретная реализация задачи для таймера
class TimerTaskExample extends TimerTask { String s;
public TimerTaskExample(String s){ this.s = s;
}
public void run() { System.out.println(s);
}
}
(C) В.О. Сафонов. 2013

Класс Timer и TimerTask
class TimerExample {
public static void main(String[] args){ Timer timer = new Timer();
//это задание таймер выполнит через 300 миллисекунд
//и будет выполнять затем каждые 400 миллисекунд timer.schedule(new TimerTaskExample("Task1"),300,400);
//это задание таймер выполнит через 500 миллисекунд и удалит из очереди заданий
timer.schedule(new TimerTaskExample("Task2"),500);
}
}
// вывод: Task1 Task2 Task1 Task1 ……..
(C) В.О. Сафонов. 2013