Главная страница
Навигация по странице:

  • КАФЕДРА ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ

  • Программирование на Java Конспект лекций

  • Редакционно-издательский отдел

  • Программирование. Программирование на Java Конспект лекций (ИТМО 2010). Справочник по языку Java и может использоваться как конспект лекционного курса Системы программирования Интернетприложений


    Скачать 0.85 Mb.
    НазваниеСправочник по языку Java и может использоваться как конспект лекционного курса Системы программирования Интернетприложений
    АнкорПрограммирование
    Дата05.08.2022
    Размер0.85 Mb.
    Формат файлаpdf
    Имя файлаПрограммирование на Java Конспект лекций (ИТМО 2010).pdf
    ТипСправочник
    #641226
    страница9 из 9
    1   2   3   4   5   6   7   8   9
    120



    - ограничивает T сверху — в качестве формального параметра могут быть использованы только потомки класса
    Number;


    - ограничивает T снизу — могут быть использованы только предки класса
    Integer
    В ограничении могут быть использованы символы '&' и '|' для объединения условий соответствующими логическими операциями.
    Wildcard
    Wildcard (дословно джокер) или групповая подстановка – синтаксические конструкции с использованием символа '?' (означает любой тип), используемые для замены в шаблонах конкретного класса множеством возможных классов.
    Групповая подстановка обычно используется для создания шаблонных классов:
    /*
    * Допустимые параметры:
    * Square s (Square extends Shape) — можно
    * String str — нельзя
    */
    static void drawAll(Collection c) { for(Shape s : c) { s.draw();
    }
    }
    Коллекции
    Коллекции – это классы для сохранения, получения, манипулирования данными над множеством объектов.
    Иерархия коллекций представлена на рис. 23.
    Iterator
    Iterator – интерфейс, позволяющий выполнять обход элементов коллекции с возможностью их удаления. Является переработкой и развитием интерфейса
    Enumeration
    121
    boolean hasNext();
    Возвращает true если в коллекции есть еще элементы.
    E next();
    Следующий элемент.
    void remove();
    Удалить элемент.
    Использование
    Iterator вместо
    Enumeration является предпочтительным из-за более короткого описания методов и появившейся операции remove.
    Класс
    ListIterator осуществляет двунаправленное перемещение по коллекции.
    Рисунок 23. Иерархия коллекций.
    122
    HashSet
    HashSet
    Collection
    java.lang.Interable
    ArrayList
    ArrayList
    AbstractCollection>
    AbstractList
    List
    Set
    AbstractSet
    AbstractQueue
    Queue
    AbstractSequentialList
    Vector
    Vector
    LinkedList
    LinkedList
    SortedSet
    NavigableSet
    EnumSet
    EnumSet
    TreeSet
    TreeSet
    Deque
    Collections
    Collections
    PriorityQueue
    PriorityQueue
    ArrayDeque
    ArrayDeque
    Stack
    Stack
    LinkedHashSet
    LinkedHashSet
    Iterator
    ListIterator
    Map
    Sorted
    Map
    Navigable
    Map
    HashMap
    Hash
    Map
    Abstract
    Map
    EnumMap
    Enum
    Map
    TreeMap
    Tree
    Map
    LinkedHashSet
    LinkedHashSet
    WeakHashMap
    WeakHashMap
    IdentityHashMap
    IdentityHashMap
    Map.Entry
    Abstract
    Map.
    SimpleEntry
    Abstract
    Map.Simpl
    eImmutableEntry<
    K,V>

    Collection
    Collection – интерфейс, описывающий набор каких-либо элементов.
    Способ организации элементов определяется реализующими Collection классами и интерфейсами. int size()
    Возвращает размер коллекции.
    boolean isEmpty()
    Возвращает true
    , если в коллекции нет элементов.
    boolean contains(Object o)
    Возвращает true
    , если коллекция содержит элемент.
    Iterator iterator();
    Возвращает
    Iterator
    Object[] toArray();
    Преобразует коллекцию в массив объектов.
    T[] toArray(T[] a);
    Преобразует в коллекцию в массив типа
    T
    , размещая в массиве a
    boolean add(E e);
    Добавляет элемент в коллекцию.
    Возвращает true
    , если элемент добавлен; false
    — если коллекция запрещает дубликаты элементов и элемент не уникален.
    boolean remove(Object o);
    Удаляет один элемент (даже если таких несколько). Возвращает true
    , если элемент удален.
    boolean containsAll(Collection c);
    Возвращает true
    , если коллекция содержит все элементы заданной коллекции.
    boolean addAll
    (Collection c);
    Добавляет элементы в коллекцию.
    Возвращает true
    , если коллекция изменена в результате операции.
    boolean removeAll
    (Collection c);
    Удаляет все элементы, заданные в коллекции с
    boolean retainAll
    (Collection c);
    Удаляет из коллекции все элементы, кроме тех, которые заданы в коллекции с
    void clear();
    Удаляет из коллекции все элементы.
    boolean equals(Object o);
    Проверяет коллекцию на равенство другой коллекции int hashCode();
    Возвращает хеш-код коллекции.
    В потомках интерфейса
    Collection допускается реализация не всех методов.
    В таком случае необходимо генерировать исключительную ситуацию
    UnsupportedOperationException
    123

    Любая коллекция должна возвращать итератор, и соответственно, позволять обходить свои элементы.
    Интерфейсы коллекций
    Set
    Множество. Элементы уникальны и, возможно, отсортированы.
    List
    Cортированная последовательность элементов, с возможностью дублирования и позиционного доступа.
    Queue
    Очередь, предназначенная для размещения элемента перед его обработкой. Расширяет коллекцию методами для вставки, выборки и просмотра элементов.
    Deque
    Двунаправленная очередь, позволяющая вставку и удаление в два конца очереди.
    Map
    Карта это соответствие ключ — значение. Каждому ключу соответствует одно значение.
    SortedSet
    Множество, элементы которого автоматически сортируются либо в их натуральном порядке (интерфейс
    Comparable
    ), либо с использованием
    Comparator
    SortedMap
    Автоматически сортированная карта (см.
    SortedSet
    )
    Navigable
    Set
    SortedSet
    , расширенный методами кратчайшего доступа к искомому элементу. В
    NavigableSet элементы могут быть доступны в порядке увеличения и уменьшения
    Navigable
    Map
    SortedMap
    , расширенный методами кратчайшего доступа к искомому элементу
    В пакете java.util.concurrent доступны дополнительные интерфейсы
    BlockingQueue
    ,
    BlockingDeque
    (ограниченное число элементов и ожидание освобождения места),
    ConcurrentMap
    ,
    ConcurrentNavigableMap
    (атомарные операции вставки, удаления, замены).
    Для уменьшения трудоемкости реализации существуют общие интерфейсы реализации коллекций -
    AbstractCollection
    ,
    AbstractMap и др. представляющие тривиальную реализацию основных методов коллекций.
    Коллекции общего назначения
    HashSet
    Реализация множества с использованием хеш-таблиц, обладающая самым высоким быстродействием
    TreeSet
    Реализация
    NavigableSet интрефейса с использованием раскрашеных деревьев
    124

    LinkedHashSet
    Реализация множества в виде хеш таблицы и дву- связанного списка с заданным порядком элементов
    ArrayList
    Массив переменного размера. Является потоко- небезопасным
    Vector
    . Наиболее высокое быстродействие
    ArrayDeque
    Эффективная реализация интерфейса
    Deque переменного размера
    LinkedList
    Двусвязная реализация интерфейса List. Быстрее
    ArrayList
    , если элементы часто добавляются и удаляются. В дополнение реализует интерфейс
    Deque
    PriorityQueue
    Реализация очереди с приоритетами
    HashMap
    Реализация интерфейса
    Map с использованием хеш таблиц
    TreeMap
    Реализация
    NavigableMap интрефейса с использованием раскрашеных деревьев
    LinkedHashMap
    Реализация карты в виде хеш таблицы и дву-связанного списка с заданным порядком элементов
    В дополнение к общим реализациям, существуют прародители коллекций - классы
    Vector и
    Hashtable
    , реализация которых была обновлена с использованием шаблонов.
    Специальные коллекции
    WeakHashMap
    Карта, сохраняющие слабые ссылки на ключи.
    Позволяет сборщику мусора уничтожить пару ключ- значение, когда на на ключ более нет внешних ссылок
    IdentityHashMap
    Реализация интерфейса
    Map с использованием хеш таблицы и сравнением объекта на равенстов по ссылке
    (
    key1==key2
    ), вместо сравнения по значению
    (
    key1.equials(key2)
    ).
    CopyOnWriteArray
    List
    Реализация List, в которой операции - мутаторы (
    add, set, remove
    ) реализуются путем создания новой копии
    List
    . В результате нет необходимости в синхронизации.
    CopyOnWriteArray
    Set
    Реализация Set c созданием новой копии по операции изменения (см.
    CopyOnWriteArrayList
    )
    EnumSet
    Высокопроизводительная реализация множества с использованием битового вектора. Все элементы должны быть элементами одного
    Enum
    EnumMap
    Высокопроизводительная реализация карты с
    125
    использованием битового вектора. Все ключи должны быть элементами одного
    Enum
    Пакета java.util.concurrent дополняет реализации коллекций классами
    ConcurrentLinkedQueue,
    LinkedBlockingQueue,
    ArrayBlockingQueue,
    PriorityBlockingQueue,
    DelayQueue,
    SynchronousQueue, LinkedBlockingDeque, ConcurrentHashMap,
    ConcurrentSkipListSet,
    ConcurrentSkipListMap,
    которые подготовлены для использования в многопоточных программах и реализуют различную дополнительную функциональность.
    Сортировка элементов коллекции
    Сортировка элементов коллекции в интерфейсе
    SortedMap и аналогичных производится при помощи естественного порядка сортировки, определяемого в элементе коллекции, либо при помощи интерфейса
    Comparator
    Естественный порядок сортировки (natural sort order) — естественный и реализованный по умолчанию (реализацией метода compareTo интерфейса java.lang.Comparable
    ) способ сравнения двух экземпляров одного класса. int compareTo(E other)
    — сравнивает this объект с other и возвращает отрицательное значение если this, 0 — если они равны и положительное значение если this>other
    . Для класса
    Byte данный метод реализуется следующим образом:
    public int compareTo(Byte anotherByte) { return this.value - anotherByte.value;
    } java.util.Comparator
    — содержит два метода:

    int compare(T o1, T o2)
    — сравнение, аналогичное compareTo

    boolean equals(Object obj)
    — true если оbj это
    Comparator и у него такой же принцип сравнения.
    Collections
    Collections — класс, состоящий из статических методов, осуществляющих различные служебные операции над коллекциями.
    126
    sort(List)
    Cортировать список, используя merge sort алгоритм, с гарантированной скоростью O (n*log n).
    127
    binarySearch(List,
    Object)
    Бинарный поиск элементов в списке.
    reverse(List)
    Изменить порядок элементов в списке на противоположный.
    shuffle(List)
    Случайно перемешать элементы.
    fill(List, Object)
    Заменить каждый элемент заданным.
    copy(List dest, List src)
    Скопировать список src в dst min(Collection)
    Вернуть минимальный элемент коллекции.
    max(Collection)
    Вернуть максимальный элемент коллекции.
    rotate(List list, int distance)
    Циклически повернуть список на указанное число элементов.
    replaceAll(List list, Object oldVal,
    Object newVal)
    Заменить все объекты на указанные.
    indexOfSubList(List source, List target)
    Вернуть индекс первого подсписка source
    , который эквивалентен target lastIndexOfSubList(L
    ist source, List target)
    Вернуть индекс последнего подсписка source
    , который эквивалентен target swap(List, int, int)
    Заменить элементы в указанных позициях списка.
    unmodifiableCollecti on (Сollection)
    Создает неизменяемую копию коллекции.
    Существуют отдельные методы для
    Set
    ,
    List
    ,
    Map
    , и т.д.
    synchronizedCollecti on (Collection)
    Создает потоко-безопасную копию коллекции.
    Существуют отдельные методы для
    Set, List,
    Map,
    и т.д.
    checkedCollection
    (Collection c,
    Class type)
    Создает типо-безопасную копию коллекции, предотвращая появление неразрешенных типов в коллекции. Существуют отдельные методы для
    Set
    ,
    List
    ,
    Map
    , и т.д.
    Set singleton(T o);
    Создает неизменяемый
    Set
    , содержащую только заданный объект. Существуют методы для
    List и
    Маp
    List nCopies(int n, T o)
    Создает неизменяемый
    List
    , содержащий n копий заданного объекта.
    frequency(Collection
    , Object)
    Подсчитать количество элементов в коллекции.
    128
    reverseOrder()
    Вернуть
    Comparator
    , которые предполагает обратный порядок сортировки элементов.
    list(Enumeration e)
    Вернуть
    Enumeration в виде
    ArrayList disjoint(Collection,
    Collection)
    Определить, что коллекции не содержат общих элементов.
    addAll(Collection, T[])
    Добавить все элементы из массива в коллекцию.
    newSetFromMap(Map)
    Создать
    Sеt из
    Map asLifoQueue(Deque)
    Создать
    Last in first out
    Queut представление из
    Deque
    129

    В 2009 году Университет стал победителем многоэтапного конкурса, в результате которого определены 12 ведущих университетов России, которым присвоена категория «Национальный исследовательский университет».
    Министерством образования и науки Российской Федерации была утверждена
    Программа развития государственного образовательного учреждения высшего профессионального образования «Санкт-Петербургский государственный университет информационных технологий, механики и оптики» на 2009–2018 годы.
    КАФЕДРА ВЫЧИСЛИТЕЛЬНОЙ ТЕХНИКИ
    Кафедра Вычислительной техники СПбГУ ИТМО создана в 1937 году и является одной из старейших и авторитетнейших научно-педагогических школ
    России.
    Первоначально кафедра называлась кафедрой математических и счетно- решающих приборов и устройств и занималась разработкой электромеханических вычислительных устройств и приборов управления. Свое нынешнее название кафедра получила в 1963 году.
    Кафедра вычислительной техники является одной из крупнейших в университете, на которой работают высококвалифицированные специалисты, в том числе 8 профессоров и 15 доцентов, обучающие около 500 студентов и 30 аспирантов.

    Гаврилов Антон Валерьевич
    Клименков Сергей Викторович
    Цопа Евгений Алексеевич
    Программирование на Java
    Конспект лекций
    В авторской редакции
    Редакционно-издательский отдел Санкт-Петербургского государственного университета информационных технологий, механики и оптики
    Зав. РИО
    Н.Ф. Гусарова
    Лицензия ИД № 00408 от 05.11.99
    Подписано к печати
    Заказ №
    Тираж
    Отпечатано на ризографе

    Редакционно-издательский отдел
    Санкт-Петербургского государственного университета информационных технологий, механики и оптики
    197101, Санкт-Петербург, Кронверкский пр., 49
    1   2   3   4   5   6   7   8   9


    написать администратору сайта