Ильдар Хабибуллин - Java 7 [Наиболее полное руководство]
- Название:Java 7 [Наиболее полное руководство]
- Автор:
- Жанр:
- Издательство:БХВ-Петербург
- Год:2012
- ISBN:978-5-9775-0735-6
- Рейтинг:
- Избранное:Добавить в избранное
-
Отзывы:
-
Ваша оценка:
Ильдар Хабибуллин - Java 7 [Наиболее полное руководство] краткое содержание
Java 7 [Наиболее полное руководство] - читать онлайн бесплатно ознакомительный отрывок
Интервал:
Закладка:
// for (Complex z: ts) z.pr(); // Другой способ обхода множества.
Действия с коллекциями
Коллекции предназначены для хранения элементов в удобном для дальнейшей обработки виде. Очень часто обработка заключается в сортировке элементов и поиске нужного элемента. Эти и другие методы обработки собраны в класс Collections.
Все методы класса Collections статические, ими можно пользоваться, не создавая экземпляры класса Collections. Методов очень много, их количество увеличивается с каждой новой версией JDK, поэтому мы перечислим только основные методы.
Как обычно в статических методах, коллекция, с которой работает метод, задается его параметром.
Сортировка может быть сделана только в упорядочиваемой коллекции, реализующей интерфейс List. Для сортировки в классе Collections есть два метода:
□ static void sort(List coll) — сортирует в естественном порядке возрастания коллекцию coll, реализующую интерфейс List;
□ static void sort(List coll, Comparator c) — сортирует коллекцию coll в порядке, заданном объектом c.
После сортировки можно осуществить бинарный поиск в коллекции:
□ static int binarySearch(List coll, Object element) — отыскивает элемент element в отсортированной в естественном порядке возрастания коллекции coll и возвращает индекс элемента или отрицательное число, если элемент не найден; отрицательное число показывает индекс, с которым элемент element был бы вставлен в коллекцию, с обратным знаком;
□ static int binarySearch(List coll, Object element, Comparator c) — то же, но коллекция отсортирована в порядке, определенном объектом c.
Четыре метода находят наибольший и наименьший элементы в упорядочиваемой коллекции:
□ static Object max(Collection coll) - возвращает наибольший в естественном поряд
ке элемент коллекции coll;
□ static Object max(Collection coll, Comparator c) — то же в порядке, заданном объектом c;
□ static Object min(Collection coll) — возвращает наименьший в естественном порядке элемент коллекции coll;
□ static Object min(Collection coll, Comparator c) — то же в порядке, заданном объектом c.
Два метода "перемешивают" элементы коллекции в случайном порядке:
□ static void shuffle(List coll) — случайные числа задаются по умолчанию;
□ static void shuffle(List coll, Random r) — случайные числа определяются объектом r.
Метод reverse (List coll) меняет порядок расположения элементов на обратный.
Метод copy(List from, List to) копирует коллекцию from в коллекцию to.
Метод fill (List coll, Object element) заменяет все элементы существующей коллекции coll элементом element.
С остальными методами класса Collections мы будет знакомиться по мере надобности.
3. Упорядочите коллекции, созданные в этой главе, и проделайте в них бинарный поиск.
Заключение
Итак, в данной главе мы выяснили, что язык Java предоставляет множество средств для работы с большими объемами информации. В массе случаев достаточно добавить в программу три — пять операторов, чтобы можно было проделать нетривиальную обработку информации.
В следующей главе мы рассмотрим аналогичные средства для работы с массивами, датами, для получения случайных чисел и прочих необходимых средств программирования.
Вопросы для самопроверки
1. Что называется коллекцией?
2. В чем отличие вектора от массива?
3. Что дает задание конкретного класса в шаблоне при определении коллекции?
4. В чем различие интерфейсов List и Set?
5. В чем различие интерфейсов List и Queue?
6. Что дополняет интерфейс Deque к интерфейсу Queue?
7. Зачем в Java введены интерфейсы NavigableSet и NavigableMap?
8. Что такое стек?
9. Что такое ассоциативный массив?
10. Что такое линейный список?
11. Что такое двунаправленный список?
12. Какие способы обхода коллекции вы знаете?
13. Каким классом-коллекцией лучше всего организовать очередь?
14. Когда удобнее использовать класс Vector, а когда — ArrayList?
15. Можно ли совсем отказаться от объекта iterator в пользу цикла "for-each"?
16. Какие классы-коллекции реализуют структуру данных "дерево"?
ГЛАВА 7
Классы-утилиты

В этой главе описаны средства, облегчающие работу с часто применяемыми конструкциями, в числе которых массивы, даты, случайные числа.
Работа с массивами
В классе Arrays из пакета java.util собрано множество методов для работы с массивами. Их можно разделить на несколько больших групп.
Восемнадцать статических методов класса Arrays сортируют массивы с разными типами числовых элементов в порядке возрастания чисел или просто объекты в их естественном порядке.
Восемь из них имеют простой вид:
static void sort(type[] a);
где type может быть один из семи примитивных типов: byte, short, int, long, char, float, double — или тип Object.
Восемь методов с теми же типами сортируют часть массива от индекса from включительно до индекса to исключительно:
static void sort(type[] a, int from, int to);
Оставшиеся два метода сортировки упорядочивают массив или его часть с элементами типа Object по правилу, заданному объектом c, реализующим интерфейс Comparator:
static void sort(Object[] a, Comparator c);
static void sort(Object[] a, int from, int to, Comparator c);
После сортировки массива можно организовать в нем бинарный поиск элемента element одним из восемнадцати статических методов поиска.
Восемь методов имеют вид:
static int binarySearch(type[] a, type element);
где type один из семи примитивных типов (byte, short, int, long, char, float, double)
или тип Object.
Восемь методов сортируют часть массива, начиная от элемента с индексом from включительно до элемента с индексом to исключительно:
static int binarySearch(type[] a, int from, int to, type element);
Оставшиеся два метода поиска применяют настраиваемые типы и имеют более сложный вид:
static int binarySearch(T[] a, T element, Comparator
Интервал:
Закладка: