Скачать презентацию Java Collections Framework It s that simple Массивы Скачать презентацию Java Collections Framework It s that simple Массивы

Season 2 - Java Collections.pptx

  • Количество слайдов: 25

Java Collections Framework It’s that simple! Java Collections Framework It’s that simple!

Массивы • • • Определения Работа с массивами Недостатки работы с массивами Почему появились Массивы • • • Определения Работа с массивами Недостатки работы с массивами Почему появились коллекции в Java Использование массивов в реализации классов коллекций

Структура Java Collection. Страшно? Структура Java Collection. Страшно?

Давайте немного упростим… Давайте немного упростим…

Интерфейс Iterable и Iterator Перебираем элементы коллекции public interface Iterable { public Iterator iterator(); Интерфейс 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 = Перебор элементов коллекции //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 Интерфейс 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 List Самый обычный список Реализации: • • Array. List Linked. List Vector Stack

Threadsafe Или когда с многопоточностью нужно быть осторожнее Threadsafe • Можно использовать коллекцию в Threadsafe Или когда с многопоточностью нужно быть осторожнее Threadsafe • Можно использовать коллекцию в разных потоках • Операции добавления и удаления выполняются медленнее Non-threadsafe • Коллекцию нужно использовать лишь из одного потока • Операции добавления и удаления выполняются максимально быстро Реализации • Vector • java. util. concurrent. * • Array. List • Hash. Set • Hash. Map

Set Когда порядок не имеет значения Реализации: • • Enum. Set Hash. Set Linked. Set Когда порядок не имеет значения Реализации: • • Enum. Set Hash. Set Linked. Hash. Set Tree. Set

Как работает Set public static void main(String[] args) { Set bag = new Hash. Как работает 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. Map Хранение объектов в виде ключ-значение Реализации: • • • Hash. Map Hashtable Linked. Hash. Map Properties Tree. Map

Пример использования Map public static void main(String[] args) { Map world = new Hash. Пример использования 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 в Generics Или как Java стала еще более строго типизированная • Причины появления Generics в Java • Generics в Collections • List • Set • Map

Пример использования Generics в коде public static void main(String[] args) { Map<String, Country> world Пример использования Generics в коде 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")); world. get("ukraine"). set. Population(48 * 1000000); world. get("china"). set. Population(1300 * 1000000); }

Класс Collections Утилиты для работы с коллекциями <T extends Object> max(Collection <? extends T> Класс Collections Утилиты для работы с коллекциями max(Collection coll) min(Collection coll) void reverse(List list) void shuffle(List list) void copy(List dest, List src) List synchronized. List(List list) void sort(List list, Comparator c)

Сравниваем котов и собак public class Animal { public String name; public Integer strength; Сравниваем котов и собак 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 animals = new Array. List<>(); animals. add(new Animal("cat", 3)); animals. add(new Animal("dog", 2)); animals. add(new Animal("elephant", 45)); Collections. sort(animals); for (Animal animal : animals) { System. out. println(animal); } }

Comparable и Comparator public interface Comparable<T> { public int compare. To(T o); } public Comparable и Comparator public interface Comparable { public int compare. To(T o); } public interface Comparator { int compare(T o 1, T o 2); boolean equals(Object obj); }

Как правильно сравнивать котов и собак public class Animal implements Comparable<Animal> { . . Как правильно сравнивать котов и собак public class Animal implements Comparable { . . . @Override public int compare. To(Animal another. Animal) { return strength. compare. To(another. Animal. strength); } } public static void main(String[] args) { . . . Collections. sort(animals, new Comparator() { @Override public int compare(Animal a 1, Animal a 2) { return a 1. strength. compare. To(a 2. strength); } }); . . . }

Производительность коллекций Производительность коллекций

Другие полезные классы пакета java. util • • Date Calendar/Gregorian. Calendar Random Arrays Другие полезные классы пакета java. util • • Date Calendar/Gregorian. Calendar Random Arrays

Date • • Date(long date) boolean after(Date when) before(Date when) set. Time(long time) 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, 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. Random • • • Random(long seed) double next. Double() float next. Float() int next. Int(int n) boolean next. Boolean()

Arrays • • • <T> List<T> as. List(T. . . a) boolean equals({array}[] a Arrays • • • List as. List(T. . . a) boolean equals({array}[] a 1, {array}[] a 2) boolean fill({array}[] a, {value} v) void sort({array}[] a) String to. String({array}[] a)