Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
Заочники 2020-2021 / Билеты.docx
Скачиваний:
71
Добавлен:
15.06.2021
Размер:
1.2 Mб
Скачать

Коллекция LinkedList и подобные

В LinkedList элементы фактически представляют собой звенья одной цепи. У каждого элемента помимо тех данных, которые он хранит, имеется ссылка на предыдущий и следующий элемент. По этим ссылкам можно переходить от одного элемента к другому.

String str1 = new String("Hello World!");

String str2 = new String("My name is Earl");

String str3 = new String("I love Java");

String str4 = new String("I live in Moscow");

LinkedList<String> earlBio = new LinkedList<>();

earlBio.add(str1);

earlBio.add(str2);

earlBio.add(str3);

earlBio.add(str4);

Билет 10.

ООП в Java. Модификаторы доступа к членам класса.

Коллекция HashMap и подобные

Билет 11.

ООП в Java. Поля (свойства): синтаксис, перегрузка, переопределение, наследование.

Поле Java – это переменная внутри класса. Синтаксис:

[access_modifier] [static] [final] type name [= initial value] ;

Итераторы. Назначение. Применение в коллекциях

Одним из ключевых методов интерфейса Collection является метод Iterator<E> iterator(). Он возвращает итератор - то есть объект, реализующий интерфейс Iterator.

Интерфейс Iterator имеет следующее определение:

public interface Iterator <E>{

    E next();

    boolean hasNext();

    void remove();

}

Реализация интерфейса предполагает, что с помощью вызова метода next() можно получить следующий элемент. С помощью метода hasNext() можно узнать, есть ли следующий элемент, и не достигнут ли конец коллекции. И если элементы еще имеются, то hasNext() вернет значение true. Метод hasNext() следует вызывать перед методом next(), так как при достижении конца коллекции метод next() выбрасывает исключение NoSuchElementException. И метод remove() удаляет текущий элемент, который был получен последним вызовом next().

Билет 12.

ООП в Java. Статические и не статические члены класса.

Модификатор static в Java напрямую связан с классом. Если поле статично, значит оно принадлежит классу, если метод статичный — аналогично: он принадлежит классу. Исходя из этого, можно обращаться к статическому методу или полю, используя имя класса.

Допустимое использование:

1. Для полей

2. Для методов

3. Статические блоки (выполняются при первой загрузке класса)

//Код класса

protected static int MinAge;

protected static int MaxAge;

static { //Выполнится при первой загрузке класса (!не объекта)

MinAge = 0;

MaxAge = 250;

}

//Проверка возраста

public static boolean checkAge(int Age) {

if( Age >= MinAge && Age <= MaxAge ) {

return true;

} else {

return false;

}

}

Коллекция Queue (очередь) и подобные

Очередь (Queue) — это структура, знакомая нам из жизни. Очереди в магазины, к врачам. Кто первее пришёл (First In), тот первее и выйдет из очереди (First Out). В Java очередь представлена интерфейсом java.util.Queue

У интерфейса очереди есть так же полезный наследник — Deque. Это так называемая "двусторонняя очередь". То есть такая очередь позволяет использовать эту структуру как с начала, так и с конца.

Билет 13.

ООП в Java. Вложенные и внутренние классы.

Вложенным называется класс, который определяется в другом классе.

Вложенный класс InnerMax не будет доступен при вызове класса в который он вложен не смотря на модификатор public. Такой вложенный класс называется внутренним

Если добавить к классу InnerMax модификатор static, то класс становится видимым, подобно статическому методу или переменной и могут быть созданы объекты этого класса.

Такие вложенные классы будут внешними.

Переопределение при наследовании возможно только для статических вложенных классов, вызываемых напрямую.

Быстродействие коллекций. Примеры.

Билет 14.

Коллекции. Идея, устройство и основные методы.

Учитывая необходимость хранения и перебора разного рода списков, как линейных, так и иерархических, как однородных по типам, так и разнородных в Java к этому вопросу подошли в самом общем виде, который только позволяет механизм интерфейсов, абстрактных классов и наследования.

Определены два базовых интерфейса, реализации которых и представляют совокупность всех способов работы со списками во всех возможных случаях: Collection и Map. Интерфейс Collection объявляет в самом общем виде методы работы со списками, независимо от того — какие это списки. Интерфес Мар – предназначен для работы со списками, состоящими из пар «ключ — значение».

Сам интерфейс Collection является наследником интерфейса Iterable (быть перечислимым), который требует от всех наследников реализации только одного метода — iterator() (сделать перечислимым т. е. объектом класса, реализующего интерфейс Iterator). Интерфейс Iterable является самым базовым (супер) интерфейсом. Интерфейс Collection расширяют интерфейсы: List (возможны повторы ключей), Set (невозможны повторы ключей) и Queue (коллекция с заданной последовательностью элементов).

ООП в Java. Использование ключевых слов: this, final, finalize

С помощью this можно обратиться к методу или свойству (полю) текущего объекта

This позволяет разрешать ситуации совпадения имен локальных переменных и переменных свойств класса

Использование ключевого слова final

Допустимое использование:

1. Запрет переопределения метода

2. Запрет наследования класса

Метод finalize() вызывается сборщиком мусора перед освобождением памяти, занимаемой объектом. Сборщик мусора может никогда не вызвать метод finalize, если при выполнении программы не потребовалась очистка памяти.

Таким образом, finalize не аналог деструктора в C++

Билет 15.

Обобщения. Обобщенные классы. Возможности и ограничения.

Обобщения применяются для того, чтобы использовать одни и те-же алгоритмы для разных типов данных. Для этого конкретный тип заменяется специальной обобщающей конструкцией, имеющей название - параметризованный тип.

Определение обобщенного класса осуществляется конструкцией:

class ИмяКласса <ИмяПараметраТипа>

GUI Swing. Менеджеры компоновки (Layout)

Основные менеджеры компоновки:

BorderLayout – позволяет разместить компоненты в 5-ти панелях. Используется по умолчанию

BoxLayout – выравнивание размещаемых компонентов по вертикали или горизонтали

CardLayout – компоненты размещаются как колода карт – один под другим

FlowLayout – компоненты размещаются один за другим и переносятся на следующую строку, если не помещаются во фрейм

GridLayout – компоненты помещаются в сетке с ячейками фиксированной ширины и высоты

GridBagLayout – компоненты разных размеров размещаются в сетке с ячейками регулируемых размеров

Билет 16.

Обобщения. Ограниченные типы.

Для того, чтобы воспользоваться операциями допустимыми с определенной группой типов следует воспользоваться ограничением обобщенного типа. Ограничив типы данных классом Number мы можем быть уверены, что получаемые значения — числа и поэтому их можно складывать и иметь другие методы, определенные для класса Number.

public class InClass<T extends Number> {

private T Mass[];

InClass(T t[]) {

this.Mass = t;

}

//Метод подсчитывает сумму значений элементов массива Mass

//Возвращаемый тип определен как Double,

//чтобы иметь максимальный диапазон значений

public Double getSumm() {

Double s = 0D;

for(int i=0; i<Mass.length; i++) {

s += Mass[i].doubleValue();

//Метод doubleValue определен в классе Number

}

return s;

}

}

Вызов метода getSumm в обобщенном классе InClass

public static void main(String args[]) {

Integer t[] = { 3, 4, 5, 2, 1, 7, -3, -2, 19};

Float f[] = { 3.09F, 4.67F, 5.89F};

//Простые типы: int, float и т.д.

//в обобщениях использовать нельзя

InClass <Integer> getI = new InClass(t);

System.out.println(getI.getSumm());

//Вернет 36.0

InClass <Float> getF = new InClass(f);

System.out.println(getF.getSumm());

//Вернет 13.649999856948853

}

Соседние файлы в папке Заочники 2020-2021