Season 2 - Java Collections.pptx
- Количество слайдов: 25
Java Collections Framework It’s that simple!
Массивы • • • Определения Работа с массивами Недостатки работы с массивами Почему появились коллекции в Java Использование массивов в реализации классов коллекций
Структура Java Collection. Страшно?
Давайте немного упростим…
Интерфейс Iterable и Iterator Перебираем элементы коллекции public interface Iterable { public Iterator iterator(); } public interface Iterator { public boolean has. Next(); public Object next(); public void remove(); }
Перебор элементов коллекции //old school List list = new Array. List(); Iterator iterator = list. iterator(); while(iterator. has. Next()) { System. out. println(iterator. next()); } //new style List list = new Array. List(); for (Object o : list) { System. out. println(o); }
Интерфейс Collection Общий интерфейс для работы с коллекциями int size() boolean is. Empty() Iterator iterator() void clear() boolean add(Object e) boolean remove(Object o) boolean contains(Object o) boolean add. All(Collection c) boolean remove. All(Collection c) boolean contains. All(Collection c)
List Самый обычный список Реализации: • • Array. List Linked. List Vector Stack
Threadsafe Или когда с многопоточностью нужно быть осторожнее Threadsafe • Можно использовать коллекцию в разных потоках • Операции добавления и удаления выполняются медленнее Non-threadsafe • Коллекцию нужно использовать лишь из одного потока • Операции добавления и удаления выполняются максимально быстро Реализации • Vector • java. util. concurrent. * • Array. List • Hash. Set • Hash. Map
Set Когда порядок не имеет значения Реализации: • • Enum. Set Hash. Set Linked. Hash. Set Tree. Set
Как работает Set public static void main(String[] args) { Set bag = new Hash. Set(); bag. add("apple"); bag. add("banana"); bag. add("orange"); bag. add("lemon"); bag. add("apple"); System. out. println(bag. size()); for (Object fruit : bag) { System. out. println(fruit); } }
Map Хранение объектов в виде ключ-значение Реализации: • • • Hash. Map Hashtable Linked. Hash. Map Properties Tree. Map
Пример использования Map public static void main(String[] args) { Map world = new Hash. Map(); world. put("usa", new Country("U. S. A")); world. put("russia", new Country("Russia")); world. put("ukraine", new Country("Ukraine")); world. put("china", new Country("China")); ((Country)world. get("ukraine")). set. Population(48 * 1000000); ((Country)world. get("china")). set. Population(1300 * 1000000); }
Generics Или как Java стала еще более строго типизированная • Причины появления Generics в Java • Generics в Collections • List
Пример использования Generics в коде public static void main(String[] args) { Map
Класс Collections Утилиты для работы с коллекциями
Сравниваем котов и собак public class Animal { public String name; public Integer strength; public Animal(String name, Integer strength) { this. name = name; this. strength = strength; } } public static void main(String[] args) { List
Comparable и Comparator public interface Comparable
Как правильно сравнивать котов и собак public class Animal implements Comparable
Производительность коллекций
Другие полезные классы пакета java. util • • Date Calendar/Gregorian. Calendar Random Arrays
Date • • Date(long date) boolean after(Date when) before(Date when) set. Time(long time)
Gregorian. Calendar • Gregorian. Calendar(int year, int month, int date) • Gregorian. Calendar(int year, int month, int date, int hour, int minute) • • • void add(int field, int amount) void roll(int field, int amount) int get(int field) Date get. Time() void set. Time(Date date) • YEAR, MONTH, WEEK_OF_YEAR, WEEK_OF_MONTH, HOUR, HOUR_OF_DAY, MINUTE, SECOND, MILLISECOND
Random • • • Random(long seed) double next. Double() float next. Float() int next. Int(int n) boolean next. Boolean()
Arrays • • •