Sem II (Program II) - N10 Flashcards
Create Java single node in a linked list.
public class Node {
int data;
Node next;
public Node(int d) { data = d; next = null; } }
Create Java simple linked list with method size.
public class Liste { private Node first = null; private Node last = null; public int size() { Node p = first; int length = 0; while (p != null) { length++; p = p.next; } return length; } }
Create Java simple linked list with method valueExists.
public class Liste { private Node first = null; private Node last = null; public boolean valueExists(int value) { Node p = first; while (p != null) { if (p.data == value) { return true; } p = p.next; } return false; } }
Create Java simple linked list with method addOn.
public class Liste { private Node first = null; private Node last = null; public void addOn(int value, int index) { if (index < 0 || index > size()) { throw new IndexOutOfBoundsException("Index: " + index + ", Size: " + size()); } Node p = first; Node q = new Node(value); if (index == 0) { q.next = first; first = q; } else { for (int i = 0; i < index - 1; i++) { p = p.next; } q.next = p.next; p.next = q; } if (index == size()) { last = q; } } }
Что такое обобщенный класс и как он объявляется?
Обобщенный класс позволяет использовать параметры типа, которые заменяются конкретными типами при создании экземпляра.
~~~
class GenerischeKlasse<T> {
T obj;
// дополнительные методы и поля
}</T>
~~~
Для чего нужны обобщенные классы?
Чтобы избежать повторения кода и повысить типобезопасность, позволяя использовать одну и ту же реализацию для различных типов данных.
Что такое параметризованный класс?
Класс, в котором формальный параметр типа заменен конкретным типом, например, GenerischeKlasse<Integer>.</Integer>
Что такое стирание типов?
Техника, при которой компилятор заменяет все параметры типа в обобщенных классах на Object и создает только один файл байт-кода для всех параметров типа.
Что означает совместное использование кода в обобщениях?Что означает совместное использование кода в обобщениях?
Байт-код обобщенного класса совместно используется для всех параметризованных типов, что позволяет избежать избыточности.
Могут ли обобщенные классы использовать float в качестве текущего параметра типа?
Да, если тип правильно указан, например, GenerischeKlasse<Float>.</Float>
Сколько формальных параметров типа может иметь обобщенный класс?
Любое количество, например:
~~~
class GenerischeKlasse<A, B, C> {
A a;
B b;
C c;
}
~~~
Перечислите некоторые ограничения обобщенных классов.
Нельзя использовать параметры типа в статических переменных класса. Нельзя создавать объекты с помощью new E. Нельзя проверять тип с помощью instanceof. Нельзя **создавать массивы напрямую от обобщенного типа, например, Punkt<Double>[].**</Double>
Является ли класс, реализующий обобщенный интерфейс, также обобщенным?
Не обязательно. Класс может быть обобщенным или конкретизировать параметр типа интерфейса.
Каковы полезные случаи применения обобщений?
Структуры данных, такие как стек, очередь, список, бинарное дерево.
**В чем разница между Punkt<Number> и Punkt<Integer>?**</Integer></Number>
**Punkt<Number> не является супертипом Punkt<Integer>, хотя Number является супертипом Integer.**</Integer></Number>
Как можно использовать вложенные обобщения?
Stack<Stack<String>> stackOfStack = new Stack<>();
Was ist eine generische Methode?
Это метод, который работает с формальными параметрами типов. Эти параметры локальны для метода и позволяют реализовывать алгоритмы, независимые от типа данных объектов.
Kann eine nicht-generische Klasse generische Methoden enthalten?
Да, необобщённый класс может содержать обобщённые методы, такие как конструкторы, методы экземпляра или статические методы.
Почему обобщённые методы часто используются в вспомогательных классах?
Чтобы переиспользовать один и тот же алгоритм для разных параметров типа, делая алгоритм независимым от типа данных.**