Центр дистанционного обучения
Generics – готовые классы
public interface List<E> {
int size();
void add(E elem);
void add(int index, E elem); E get(int index);
E set(int index, E elem); E remove(int index);
}
public class ArrayList<E> implements List<E> {
}
online.mirea.ru
Центр дистанционного обучения
Generics – готовые классы
List<String> list = new ArrayList<>();
list.add(“String 1”); list.add(“String 2”);
// [“String 1”, “String 2”]
String removed = list.remove(0);
// [“String 2”]
list.set(0, “String 2 revised”);
//[“String 2 revised”] list.add(0, “String 0”);
//[“String 0”, “String 2 revised”]
online.mirea.ru
Центр дистанционного обучения
Generics – готовые классы
Конвенция кода Java об именах типовых параметров:
•<E> для элемента коллекции
•<T> для обобщенного типа
•<K, V> ключ и значение
Традиционно из одной буквы, но это не обязательно.
online.mirea.ru
Центр дистанционного обучения
Абстрактные типы данных (ADT)
Абстрактные типы данных – определяются своим поведением
– набором доступных операций (в отличие от описания их реализации).
В ООП абстрактный тип данных определяется набором методов.
online.mirea.ru
Центр дистанционного обучения
Абстрактные типы данных (ADT)
Абстрактный тип данных ≠ абстрактный класс. Пример ADT на основе конкретного класса:
public class ComplexNumber {
static ComplexNumber fromXY(double x, double y) { ... } static ComplexNumber fromPolar(double r, double phi) { ... } ComplexNumber add(ComplexNumber that) { ... }
...
}
Внутри класс ComplexNumber может быть представлен и в декартовых, и в полярных координатах. Для конечного
пользователя класса это неважно.
online.mirea.ru