SlideShare a Scribd company logo
1 of 33
Коллекции JFC
Виталий Унгурян
unguryan@itstep.org
Что такое коллекции?
JCF
Java Collection Framework - это набор
связанных классов и интерфейсов,
реализующих (commonly reusable
collection) структур данных. Он был
спроектирован и разработан, в первую
очередь, Джошуа Блохом.
Альтернативные коллекции
Guava (Google Collections Library) - Библиотека
добавляет несколько полезных реализаций структур
данных, таких как мультимножество,
мультиотображение и двунаправленное
отображение. Улучшена эффективность.
Trove library - Реализация коллекций, позволяющая
хранить примитивы (в Java Collections Framework
примитивы хранить нельзя, только оберточные типы),
что позволяет повысить эффективность работы.
PCJ (Primitive Collections for Java) - так же как и Trove
предназначены для примитивных типов, что позволит
повысить эффективность.
Классы обертки
Таблица 13.1. Примитивные типы и соответствующие им классы-
обертки.
Класс-обертка Примитивный тип
Byte byte
Short short
Character char
Integer int
Long long
Float float
Double double
Boolean boolean
При этом классы-обертки числовых типов
Byte, Short, Integer, Long, Float, Double
наследуются от одного класса – Number.
Integer
public static int parseInt(String s) –
преобразует строку, представляющую
десятичную запись целого числа, в int;
public static int parseInt(String s, int radix) –
преобразует строку, представляющую
запись целого числа в системе счисления
radix, в int.
Оба метода могут вызывать исключение
NumberFormatException, если строка, переданная
на вход, содержит нецифровые символы.
Integer
Не следует путать эти методы с другой
парой похожих методов:
public static Integer valueOf(String s)
public static Integer valueOf(String s, int
radix)
Данные методы выполняют
аналогичную работу, только результат
представляют в виде объекта-обертки.
Integer
Существует также два конструктора для
создания экземпляров класса Integer:
Integer(String s) – конструктор,
принимающий в качестве параметра
строку, представляющую числовое
значение.
Integer(int i) – конструктор,
принимающий числовое значение.
Integer
pubic static String toString(int i) – используется для
преобразования значения типа int в строку.
Далее перечислены методы, преобразующие int в
строковое восьмеричное, двоичное и
шестнадцатеричное представление:
pubic static String toOctalString(int i) – восьмеричное;
pubic static String toBinaryString(int i) – двоичное;
pubic static String toHexString(int i) –
шестнадцатеричное.
Integer
Имеется также две статические
константы:
Integer.MIN_VALUE – минимальное int
значение;
Integer.MAX_VALUE – максимальное
int значение.
Аналогичные константы, описывающие границы
соответствующих типов, определены и для всех
остальных классов-оберток числовых примитивных
типов.
Integer
public int intValue() возвращает значение
примитивного типа для данного объекта
Integer. Классы-обертки остальных
примитивных целочисленных типов –
Byte, Short, Long – содержат
аналогичные методы и константы
(определенные для соответствующих
типов: byte, short, long).
Float и Double
NEGATIVE_INFINITY – отрицательная
бесконечность;
POSITIVE_INFINITY – положительная
бесконечность;
NaN – нечисловое значение.
.
MIN_VALUE
Кроме того, другой смысл имеет
значение MIN_VALUE – вместо
наименьшего значения оно
представляет минимальное
положительное (строго > 0) значение,
которое может быть представлено
этим примитивным типом
Character
Реализует интерфейсы Comparable и
Serializable.
public char charValue() – возвращает
обернутое значение char;
public int compareTo(Character
anotherCharacter) – сравнивает
обернутые значения char как числа, то
есть возвращает значение return
this.value – anotherCharacter.value.
Character
Cтатических методов в классе Character
довольно много, но все они просты и
логика их работы понятна из названия.
Большинство из них - это методы,
принимающие char и проверяющие
всевозможные свойства. Например:
public static boolean isDigit(char c) //
проверяет, является ли char цифрой.
Void
Этот класс-обертка, в отличие от
остальных, не реализует интерфейс
java.io.Serializable. Он не имеет открытого
конструктора. Более того, экземпляр этого
класса вообще не может быть получен. Он
нужен только для получения ссылки на
объект Class, соответствующий void. Эта
ссылка представлена статической
константой TYPE.
Что надо помнить про обертки
 каждый примитивный тип имеет соответствующий класс-
обертку;
 все классы-обертки могут быть сконструированы как с
использованием примитивных типов, так и с использованием
String, за исключением Character, который может быть
сконструирован только по char;
 классы-обертки могут сравниваться с использованием
метода equals();
 примитивные типы могут быть извлечены из классов-оберток
с помощью соответствующего метода xxxxValue() (например
intValue());
 классы-обертки также являются классами-утилитами, т.е.
предоставляют набор статических методов для работы с
примитивными типами;
 классы-обертки являются неизменяемыми.
Enumeration - перечисления
Перечисление (enum) - это тип,
значения которого ограничены
конечным набором констант.
Enumeration - перечисления
Пример тип данных для
хранения времени года:
enum Season {
WINTER, SPRING, SUMMER, AUTUMN
}
Season season = Season.SPRING;
if (season == Season.SPRING) {
season = Season.SUMMER; }
System.out.println(season);
Перечисление - это класс
System.out.println(Season.class.getSuperclass());
Элементы enum Season (WINTER,
SPRING и т.д.) - это статически
доступные экземпляры enum-класса
Season. Их статическая доступность
позволяет нам выполнять сравнение с
помощью оператора сравнения ссылок
==.
Название и порядковый номер
элемента enum
Season season = Season.WINTER;
System.out.println("season.name()=" +
season.name() + " season.toString()=" +
season.toString() + " season.ordinal()=" +
season.ordinal());
Получение елемента enum по строковому
представлению его имени
String name = "WINTER";
Season season = Season.valueOf(name);
Если элемент не будет найден, то будет
выброшен IllegalArgumentException, а в
случае, если name равен null -
NullPointerException.
Получение всех элементов
перечисления
System.out.println(Arrays.toString(Season.
values()));
Обратите внимание, что ни метод
valueOf(), ни метод values() не
определен в классе java.lang.Enum.
Вместо этого они автоматически
добавляются компилятором на этапе
компиляции enum-класса.
Добавляем свои методы в enum-класс
enum Direction {
UP, DOWN;
public Direction opposite() {
return this == UP ? DOWN : UP;
}
}
Использование наследования в enum.
enum Direction {
UP {
public Direction opposite() { return DOWN; }
},
DOWN {
public Direction opposite() { return UP; }
};
public abstract Direction opposite();
}
Перечисление и generic
В Java использование шаблонных
типов (generic) в enum запрещено.
Не скомпилируется:
enum Type<T> {}
JCF причины создания
Стандартный набор коллекций Java
служит для избавления программиста
от необходимости самостоятельно
реализовывать эти типы данных и
снабжает его дополнительными
возможностями.
История
До выхода Java 2 v1.5 Tiger
коллекции обладали значительным
недостатком по сравнению с
массивами. Дело в том, что до
версии 1.5 Java не поддерживал
шаблонные типы данных, что не
позволяло создавать
типизированные коллекции.
История
С введением в Java 2 v1.5
настраиваемых (generics) типов
Collections Framework был переписан и
сейчас поддерживает строгую
типизацию. Т.е. можно объявить
коллекцию, которая сможет хранить
объекты только определенного класса и
потомков этого класса.
Интерфейсы в JCF
Все классы коллекций реализуют
различные интерфейсы, которые
определяют поведение коллекции.
Интерфейс определяет «что делает
коллекция», а конкретная реализация
— «как коллекция делает то, что
определяет интерфейс».
Java.util.Collection<E>
Это базовый интерфейс Collections
Framework. В этом интерфейсе
определены основные методы для
манипуляции с данными, такие как:
вставка (add, addAll), удаление (remove,
removeAll, clear), поиск (contains).
Однако, в конкретной реализации часть методов
может быть не определена, а их использование, в
этом случае, вызовет исключение
java.lang.UnsupportedOperationException.
Java. Введение в коллекции. Классы обертки.  Перечисленияю

More Related Content

What's hot

Рефлексия в java
Рефлексия в javaРефлексия в java
Рефлексия в javaUnguryan Vitaliy
 
Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.Unguryan Vitaliy
 
Java. Сборщик мусора. Работа с памятью.
Java.  Сборщик мусора. Работа с памятью. Java.  Сборщик мусора. Работа с памятью.
Java. Сборщик мусора. Работа с памятью. Unguryan Vitaliy
 
Java. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторыJava. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторыUnguryan Vitaliy
 
Java. Строки. Класс String.
Java. Строки. Класс String.Java. Строки. Класс String.
Java. Строки. Класс String.Unguryan Vitaliy
 
Аннотации в java
Аннотации в javaАннотации в java
Аннотации в javaUnguryan Vitaliy
 
Алгоритмы поиска и сортировки
Алгоритмы  поиска и сортировкиАлгоритмы  поиска и сортировки
Алгоритмы поиска и сортировкиUnguryan Vitaliy
 
Java. Многопоточность.
Java. Многопоточность.Java. Многопоточность.
Java. Многопоточность.Unguryan Vitaliy
 
Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.Unguryan Vitaliy
 

What's hot (11)

Рефлексия в java
Рефлексия в javaРефлексия в java
Рефлексия в java
 
Uml
UmlUml
Uml
 
Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.Java. Вложенные классы и интерфейсы.
Java. Вложенные классы и интерфейсы.
 
Java. Сборщик мусора. Работа с памятью.
Java.  Сборщик мусора. Работа с памятью. Java.  Сборщик мусора. Работа с памятью.
Java. Сборщик мусора. Работа с памятью.
 
Java. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторыJava. Переменные, типы данных, операторы
Java. Переменные, типы данных, операторы
 
Java. Строки. Класс String.
Java. Строки. Класс String.Java. Строки. Класс String.
Java. Строки. Класс String.
 
Step 3.2
Step 3.2Step 3.2
Step 3.2
 
Аннотации в java
Аннотации в javaАннотации в java
Аннотации в java
 
Алгоритмы поиска и сортировки
Алгоритмы  поиска и сортировкиАлгоритмы  поиска и сортировки
Алгоритмы поиска и сортировки
 
Java. Многопоточность.
Java. Многопоточность.Java. Многопоточность.
Java. Многопоточность.
 
Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.Java. Массивы. Многомерные массивы.
Java. Массивы. Многомерные массивы.
 

Viewers also liked

Java. Интерфейс Reference - типы ссылок
Java. Интерфейс Reference -  типы ссылокJava. Интерфейс Reference -  типы ссылок
Java. Интерфейс Reference - типы ссылокUnguryan Vitaliy
 
Java. Инкапсуляция.
Java. Инкапсуляция.Java. Инкапсуляция.
Java. Инкапсуляция.Unguryan Vitaliy
 
Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Unguryan Vitaliy
 
Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.Unguryan Vitaliy
 
Java. Конструкторы класса и инициализация
Java. Конструкторы класса и инициализация Java. Конструкторы класса и инициализация
Java. Конструкторы класса и инициализация Unguryan Vitaliy
 
Java. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередьJava. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередьUnguryan Vitaliy
 
Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.Unguryan Vitaliy
 
Java. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операцииJava. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операцииUnguryan Vitaliy
 
An Introduction to JVM Internals and Garbage Collection in Java
An Introduction to JVM Internals and Garbage Collection in JavaAn Introduction to JVM Internals and Garbage Collection in Java
An Introduction to JVM Internals and Garbage Collection in JavaAbhishek Asthana
 

Viewers also liked (11)

Java. Циклы.
Java. Циклы.Java. Циклы.
Java. Циклы.
 
Java. Интерфейс Reference - типы ссылок
Java. Интерфейс Reference -  типы ссылокJava. Интерфейс Reference -  типы ссылок
Java. Интерфейс Reference - типы ссылок
 
Java. Инкапсуляция.
Java. Инкапсуляция.Java. Инкапсуляция.
Java. Инкапсуляция.
 
Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.Java. Интерфейс Map - ассоциативные массивы.
Java. Интерфейс Map - ассоциативные массивы.
 
List - списки
List - списки List - списки
List - списки
 
Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.Java. Логические операторы, операторы ветвления.
Java. Логические операторы, операторы ветвления.
 
Java. Конструкторы класса и инициализация
Java. Конструкторы класса и инициализация Java. Конструкторы класса и инициализация
Java. Конструкторы класса и инициализация
 
Java. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередьJava. Интерфейс Queue - очередь
Java. Интерфейс Queue - очередь
 
Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.Java. Интерфейс Set - наборы (множества) и его реализации.
Java. Интерфейс Set - наборы (множества) и его реализации.
 
Java. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операцииJava. Cистемы счислния, битовые операции
Java. Cистемы счислния, битовые операции
 
An Introduction to JVM Internals and Garbage Collection in Java
An Introduction to JVM Internals and Garbage Collection in JavaAn Introduction to JVM Internals and Garbage Collection in Java
An Introduction to JVM Internals and Garbage Collection in Java
 

Similar to Java. Введение в коллекции. Классы обертки. Перечисленияю

04 Стандартная Библиотека
04 Стандартная Библиотека04 Стандартная Библиотека
04 Стандартная Библиотекаphearnot
 
Msu.Center.Lectures.J04 Std Libs
Msu.Center.Lectures.J04 Std LibsMsu.Center.Lectures.J04 Std Libs
Msu.Center.Lectures.J04 Std Libsolegol
 
Oop java.generics
Oop java.genericsOop java.generics
Oop java.genericsmuqaddas_m
 
9. java lecture library
9. java lecture library9. java lecture library
9. java lecture libraryMERA_school
 
Зачем нужна Scala?
Зачем нужна Scala?Зачем нужна Scala?
Зачем нужна Scala?Vasil Remeniuk
 
C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.Igor Shkulipa
 
Характерные черты функциональных языков программирования
Характерные черты функциональных языков программированияХарактерные черты функциональных языков программирования
Характерные черты функциональных языков программированияAlex.Kolonitsky
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Javametaform
 
Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)Ontico
 
Диаграмма классов
Диаграмма классовДиаграмма классов
Диаграмма классовDEVTYPE
 
Msu.Center.Lectures.J01 Introducing Java
Msu.Center.Lectures.J01 Introducing JavaMsu.Center.Lectures.J01 Introducing Java
Msu.Center.Lectures.J01 Introducing Javaolegol
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Javametaform
 
Discovering Lambdas in Java 8
Discovering Lambdas in Java 8Discovering Lambdas in Java 8
Discovering Lambdas in Java 8Stfalcon Meetups
 
Лекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеЛекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеmetaform
 
Lambdas in java 8
Lambdas in java 8Lambdas in java 8
Lambdas in java 8chashnikov
 

Similar to Java. Введение в коллекции. Классы обертки. Перечисленияю (20)

04 Стандартная Библиотека
04 Стандартная Библиотека04 Стандартная Библиотека
04 Стандартная Библиотека
 
Msu.Center.Lectures.J04 Std Libs
Msu.Center.Lectures.J04 Std LibsMsu.Center.Lectures.J04 Std Libs
Msu.Center.Lectures.J04 Std Libs
 
Regular Expressions
Regular ExpressionsRegular Expressions
Regular Expressions
 
Oop java.generics
Oop java.genericsOop java.generics
Oop java.generics
 
9. java lecture library
9. java lecture library9. java lecture library
9. java lecture library
 
Обзор Ruby
Обзор RubyОбзор Ruby
Обзор Ruby
 
Зачем нужна Scala?
Зачем нужна Scala?Зачем нужна Scala?
Зачем нужна Scala?
 
десант презентация
десант презентациядесант презентация
десант презентация
 
C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.C++ Базовый. Занятие 03.
C++ Базовый. Занятие 03.
 
Характерные черты функциональных языков программирования
Характерные черты функциональных языков программированияХарактерные черты функциональных языков программирования
Характерные черты функциональных языков программирования
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)Язык программирования Scala / Владимир Успенский (TCS Bank)
Язык программирования Scala / Владимир Успенский (TCS Bank)
 
Рекурсия. Поиск
Рекурсия. ПоискРекурсия. Поиск
Рекурсия. Поиск
 
Диаграмма классов
Диаграмма классовДиаграмма классов
Диаграмма классов
 
Msu.Center.Lectures.J01 Introducing Java
Msu.Center.Lectures.J01 Introducing JavaMsu.Center.Lectures.J01 Introducing Java
Msu.Center.Lectures.J01 Introducing Java
 
Классы и объекты в Java
Классы и объекты в JavaКлассы и объекты в Java
Классы и объекты в Java
 
Discovering Lambdas in Java 8
Discovering Lambdas in Java 8Discovering Lambdas in Java 8
Discovering Lambdas in Java 8
 
Lec 3
Lec 3Lec 3
Lec 3
 
Лекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследованиеЛекция 6_принципы ООП : инкапсуляция, наследование
Лекция 6_принципы ООП : инкапсуляция, наследование
 
Lambdas in java 8
Lambdas in java 8Lambdas in java 8
Lambdas in java 8
 

More from Unguryan Vitaliy

Модульное тестирование.
Модульное тестирование. Модульное тестирование.
Модульное тестирование. Unguryan Vitaliy
 
Архитектурный шаблон MVC
Архитектурный шаблон MVCАрхитектурный шаблон MVC
Архитектурный шаблон MVCUnguryan Vitaliy
 
Работа в команде, управление программными проектами
Работа в команде, управление программными проектамиРабота в команде, управление программными проектами
Работа в команде, управление программными проектамиUnguryan Vitaliy
 
Системы контроля версий
Системы контроля версийСистемы контроля версий
Системы контроля версийUnguryan Vitaliy
 
Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Unguryan Vitaliy
 
Введение в язык программирования «Java»
Введение в язык программирования «Java»Введение в язык программирования «Java»
Введение в язык программирования «Java»Unguryan Vitaliy
 
Шаблоны проектирования GoF
Шаблоны проектирования GoFШаблоны проектирования GoF
Шаблоны проектирования GoFUnguryan Vitaliy
 
Ввведение в java
Ввведение в javaВвведение в java
Ввведение в javaUnguryan Vitaliy
 
Введение в hibernate
Введение в hibernateВведение в hibernate
Введение в hibernateUnguryan Vitaliy
 
Введение в Spring
Введение в SpringВведение в Spring
Введение в SpringUnguryan Vitaliy
 
Cookies, session и другое в JSP
Cookies, session и другое в JSPCookies, session и другое в JSP
Cookies, session и другое в JSPUnguryan Vitaliy
 
Сетевое взаимодействие
Сетевое взаимодействиеСетевое взаимодействие
Сетевое взаимодействиеUnguryan Vitaliy
 
Введение в сетевые технологии
Введение в сетевые технологииВведение в сетевые технологии
Введение в сетевые технологииUnguryan Vitaliy
 

More from Unguryan Vitaliy (20)

Модульное тестирование.
Модульное тестирование. Модульное тестирование.
Модульное тестирование.
 
Архитектурный шаблон MVC
Архитектурный шаблон MVCАрхитектурный шаблон MVC
Архитектурный шаблон MVC
 
Работа в команде, управление программными проектами
Работа в команде, управление программными проектамиРабота в команде, управление программными проектами
Работа в команде, управление программными проектами
 
Системы контроля версий
Системы контроля версийСистемы контроля версий
Системы контроля версий
 
Принципы SOLID
Принципы SOLIDПринципы SOLID
Принципы SOLID
 
Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.Парадигма объектно-ориентированного программирования.
Парадигма объектно-ориентированного программирования.
 
Введение в язык программирования «Java»
Введение в язык программирования «Java»Введение в язык программирования «Java»
Введение в язык программирования «Java»
 
Шаблоны проектирования GoF
Шаблоны проектирования GoFШаблоны проектирования GoF
Шаблоны проектирования GoF
 
Ввведение в java
Ввведение в javaВвведение в java
Ввведение в java
 
Введение в hibernate
Введение в hibernateВведение в hibernate
Введение в hibernate
 
Spring AOP
Spring AOPSpring AOP
Spring AOP
 
Введение в Spring
Введение в SpringВведение в Spring
Введение в Spring
 
Cookies, session и другое в JSP
Cookies, session и другое в JSPCookies, session и другое в JSP
Cookies, session и другое в JSP
 
JSTL
JSTLJSTL
JSTL
 
JSP
JSPJSP
JSP
 
JDBC
JDBCJDBC
JDBC
 
Сервлеты
СервлетыСервлеты
Сервлеты
 
Сетевое взаимодействие
Сетевое взаимодействиеСетевое взаимодействие
Сетевое взаимодействие
 
Введение в сетевые технологии
Введение в сетевые технологииВведение в сетевые технологии
Введение в сетевые технологии
 
XML
XMLXML
XML
 

Java. Введение в коллекции. Классы обертки. Перечисленияю

  • 3. JCF Java Collection Framework - это набор связанных классов и интерфейсов, реализующих (commonly reusable collection) структур данных. Он был спроектирован и разработан, в первую очередь, Джошуа Блохом.
  • 4. Альтернативные коллекции Guava (Google Collections Library) - Библиотека добавляет несколько полезных реализаций структур данных, таких как мультимножество, мультиотображение и двунаправленное отображение. Улучшена эффективность. Trove library - Реализация коллекций, позволяющая хранить примитивы (в Java Collections Framework примитивы хранить нельзя, только оберточные типы), что позволяет повысить эффективность работы. PCJ (Primitive Collections for Java) - так же как и Trove предназначены для примитивных типов, что позволит повысить эффективность.
  • 5. Классы обертки Таблица 13.1. Примитивные типы и соответствующие им классы- обертки. Класс-обертка Примитивный тип Byte byte Short short Character char Integer int Long long Float float Double double Boolean boolean При этом классы-обертки числовых типов Byte, Short, Integer, Long, Float, Double наследуются от одного класса – Number.
  • 6. Integer public static int parseInt(String s) – преобразует строку, представляющую десятичную запись целого числа, в int; public static int parseInt(String s, int radix) – преобразует строку, представляющую запись целого числа в системе счисления radix, в int. Оба метода могут вызывать исключение NumberFormatException, если строка, переданная на вход, содержит нецифровые символы.
  • 7. Integer Не следует путать эти методы с другой парой похожих методов: public static Integer valueOf(String s) public static Integer valueOf(String s, int radix) Данные методы выполняют аналогичную работу, только результат представляют в виде объекта-обертки.
  • 8. Integer Существует также два конструктора для создания экземпляров класса Integer: Integer(String s) – конструктор, принимающий в качестве параметра строку, представляющую числовое значение. Integer(int i) – конструктор, принимающий числовое значение.
  • 9. Integer pubic static String toString(int i) – используется для преобразования значения типа int в строку. Далее перечислены методы, преобразующие int в строковое восьмеричное, двоичное и шестнадцатеричное представление: pubic static String toOctalString(int i) – восьмеричное; pubic static String toBinaryString(int i) – двоичное; pubic static String toHexString(int i) – шестнадцатеричное.
  • 10. Integer Имеется также две статические константы: Integer.MIN_VALUE – минимальное int значение; Integer.MAX_VALUE – максимальное int значение. Аналогичные константы, описывающие границы соответствующих типов, определены и для всех остальных классов-оберток числовых примитивных типов.
  • 11. Integer public int intValue() возвращает значение примитивного типа для данного объекта Integer. Классы-обертки остальных примитивных целочисленных типов – Byte, Short, Long – содержат аналогичные методы и константы (определенные для соответствующих типов: byte, short, long).
  • 12. Float и Double NEGATIVE_INFINITY – отрицательная бесконечность; POSITIVE_INFINITY – положительная бесконечность; NaN – нечисловое значение. .
  • 13. MIN_VALUE Кроме того, другой смысл имеет значение MIN_VALUE – вместо наименьшего значения оно представляет минимальное положительное (строго > 0) значение, которое может быть представлено этим примитивным типом
  • 14. Character Реализует интерфейсы Comparable и Serializable. public char charValue() – возвращает обернутое значение char; public int compareTo(Character anotherCharacter) – сравнивает обернутые значения char как числа, то есть возвращает значение return this.value – anotherCharacter.value.
  • 15. Character Cтатических методов в классе Character довольно много, но все они просты и логика их работы понятна из названия. Большинство из них - это методы, принимающие char и проверяющие всевозможные свойства. Например: public static boolean isDigit(char c) // проверяет, является ли char цифрой.
  • 16. Void Этот класс-обертка, в отличие от остальных, не реализует интерфейс java.io.Serializable. Он не имеет открытого конструктора. Более того, экземпляр этого класса вообще не может быть получен. Он нужен только для получения ссылки на объект Class, соответствующий void. Эта ссылка представлена статической константой TYPE.
  • 17. Что надо помнить про обертки  каждый примитивный тип имеет соответствующий класс- обертку;  все классы-обертки могут быть сконструированы как с использованием примитивных типов, так и с использованием String, за исключением Character, который может быть сконструирован только по char;  классы-обертки могут сравниваться с использованием метода equals();  примитивные типы могут быть извлечены из классов-оберток с помощью соответствующего метода xxxxValue() (например intValue());  классы-обертки также являются классами-утилитами, т.е. предоставляют набор статических методов для работы с примитивными типами;  классы-обертки являются неизменяемыми.
  • 18. Enumeration - перечисления Перечисление (enum) - это тип, значения которого ограничены конечным набором констант.
  • 19. Enumeration - перечисления Пример тип данных для хранения времени года: enum Season { WINTER, SPRING, SUMMER, AUTUMN } Season season = Season.SPRING; if (season == Season.SPRING) { season = Season.SUMMER; } System.out.println(season);
  • 20. Перечисление - это класс System.out.println(Season.class.getSuperclass()); Элементы enum Season (WINTER, SPRING и т.д.) - это статически доступные экземпляры enum-класса Season. Их статическая доступность позволяет нам выполнять сравнение с помощью оператора сравнения ссылок ==.
  • 21. Название и порядковый номер элемента enum Season season = Season.WINTER; System.out.println("season.name()=" + season.name() + " season.toString()=" + season.toString() + " season.ordinal()=" + season.ordinal());
  • 22. Получение елемента enum по строковому представлению его имени String name = "WINTER"; Season season = Season.valueOf(name); Если элемент не будет найден, то будет выброшен IllegalArgumentException, а в случае, если name равен null - NullPointerException.
  • 23. Получение всех элементов перечисления System.out.println(Arrays.toString(Season. values())); Обратите внимание, что ни метод valueOf(), ни метод values() не определен в классе java.lang.Enum. Вместо этого они автоматически добавляются компилятором на этапе компиляции enum-класса.
  • 24. Добавляем свои методы в enum-класс enum Direction { UP, DOWN; public Direction opposite() { return this == UP ? DOWN : UP; } }
  • 25. Использование наследования в enum. enum Direction { UP { public Direction opposite() { return DOWN; } }, DOWN { public Direction opposite() { return UP; } }; public abstract Direction opposite(); }
  • 26. Перечисление и generic В Java использование шаблонных типов (generic) в enum запрещено. Не скомпилируется: enum Type<T> {}
  • 27. JCF причины создания Стандартный набор коллекций Java служит для избавления программиста от необходимости самостоятельно реализовывать эти типы данных и снабжает его дополнительными возможностями.
  • 28. История До выхода Java 2 v1.5 Tiger коллекции обладали значительным недостатком по сравнению с массивами. Дело в том, что до версии 1.5 Java не поддерживал шаблонные типы данных, что не позволяло создавать типизированные коллекции.
  • 29. История С введением в Java 2 v1.5 настраиваемых (generics) типов Collections Framework был переписан и сейчас поддерживает строгую типизацию. Т.е. можно объявить коллекцию, которая сможет хранить объекты только определенного класса и потомков этого класса.
  • 30. Интерфейсы в JCF Все классы коллекций реализуют различные интерфейсы, которые определяют поведение коллекции. Интерфейс определяет «что делает коллекция», а конкретная реализация — «как коллекция делает то, что определяет интерфейс».
  • 31.
  • 32. Java.util.Collection<E> Это базовый интерфейс Collections Framework. В этом интерфейсе определены основные методы для манипуляции с данными, такие как: вставка (add, addAll), удаление (remove, removeAll, clear), поиск (contains). Однако, в конкретной реализации часть методов может быть не определена, а их использование, в этом случае, вызовет исключение java.lang.UnsupportedOperationException.