Sem II (Program II) - N10 Flashcards

1
Q

Create Java single node in a linked list.

A

public class Node {
int data;
Node next;

public Node(int d) {
    data = d;
    next = null;
} }
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Create Java simple linked list with method size.

A
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;
    }
  }
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Create Java simple linked list with method valueExists.

A
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;
    }
  }
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Create Java simple linked list with method addOn.

A
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;
        }
    }
  }
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Что такое обобщенный класс и как он объявляется?

A

Обобщенный класс позволяет использовать параметры типа, которые заменяются конкретными типами при создании экземпляра.

class GenerischeKlasse<T> {
    T obj;
    // дополнительные методы и поля
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Для чего нужны обобщенные классы?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Что такое параметризованный класс?

A

Класс, в котором формальный параметр типа заменен конкретным типом, например, GenerischeKlasse<Integer>.</Integer>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Что такое стирание типов?

A

Техника, при которой компилятор заменяет все параметры типа в обобщенных классах на Object и создает только один файл байт-кода для всех параметров типа.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Что означает совместное использование кода в обобщениях?Что означает совместное использование кода в обобщениях?

A

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

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Могут ли обобщенные классы использовать float в качестве текущего параметра типа?

A

Да, если тип правильно указан, например, GenerischeKlasse<Float>.</Float>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Сколько формальных параметров типа может иметь обобщенный класс?

A

Любое количество, например:

class GenerischeKlasse<A, B, C> {
    A a;
    B b;
    C c;
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Перечислите некоторые ограничения обобщенных классов.

A

Нельзя использовать параметры типа в статических переменных класса. Нельзя создавать объекты с помощью new E. Нельзя проверять тип с помощью instanceof. Нельзя **создавать массивы напрямую от обобщенного типа, например, Punkt<Double>[].**</Double>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

Является ли класс, реализующий обобщенный интерфейс, также обобщенным?

A

Не обязательно. Класс может быть обобщенным или конкретизировать параметр типа интерфейса.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Каковы полезные случаи применения обобщений?

A

Структуры данных, такие как стек, очередь, список, бинарное дерево.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

**В чем разница между Punkt<Number> и Punkt<Integer>?**</Integer></Number>

A

**Punkt<Number> не является супертипом Punkt<Integer>, хотя Number является супертипом Integer.**</Integer></Number>

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Как можно использовать вложенные обобщения?

A
Stack<Stack<String>> stackOfStack = new Stack<>();
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Was ist eine generische Methode?

A

Это метод, который работает с формальными параметрами типов. Эти параметры локальны для метода и позволяют реализовывать алгоритмы, независимые от типа данных объектов.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Kann eine nicht-generische Klasse generische Methoden enthalten?

A

Да, необобщённый класс может содержать обобщённые методы, такие как конструкторы, методы экземпляра или статические методы.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Почему обобщённые методы часто используются в вспомогательных классах?

A

Чтобы переиспользовать один и тот же алгоритм для разных параметров типа, делая алгоритм независимым от типа данных.**

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Welche Einschränkungen hat die generische swap-Methode?

A

Метод swap может быть использован только в том случае, если параметры типов объектов совместимы.

21
Q

Ist der Typparameter bei der Methode random immer gleich?

A

Нет, параметр типа не всегда одинаков. Компилятор выводит общий базовый тип для аргументов (инференция типов).

22
Q

Was ist ein Bounded Typparameter?
Что такое ограниченный параметр типа?

A

Ограниченный параметр типа задаёт ограничения на возможный тип, например, с использованием **<T>**. Это гарантирует, что тип **обладает определёнными методами или **свойствами.**</T>

23
Q

Wie wird eine Methode mit Bounded Typparameter typensicher gemacht?
Как сделать метод с ограниченным параметром типа типобезопасным?

A

С помощью ограничения параметра типа на классы или интерфейсы, такие как Comparable, что позволяет компилятору убедиться в наличии необходимых методов, например, compareTo.

24
Q

Was ist Typ-Inferenz?
Что такое инференция типов?

A

Компилятор автоматически выводит тип на основе аргументов. При этом ищется общий базовый тип в иерархии классов и интерфейсов.

25
**Geben Sie ein Beispiel für Typ-Inferenz.**
Object s = GenericMethods.random("Kuchen", 5); Comparable c = GenericMethods.random("Kuchen", 5);
26
**Warum sind generische Methoden praktisch?**
Они **увеличивают переиспользуемость и типобезопасность, поскольку позволяют реализовывать алгоритмы для различных типов данных без избыточности.**
27
**Was ist der Unterschied zwischen einem formalen Typparameter T und einer Wildcard ?**
**T обозначает конкретный тип**, тогда как **? используется для обозначения всех возможных типов.**
28
**Was ist eine unbounded Wildcard und wofür wird sie verwendet?**
Неограниченный метасимвол **(?) не имеет ограничений и используется для создания ссылок на объекты любых типов.**
29
**Почему нельзя напрямую определять обобщённые массивы, например, Punkt[] arr = new Punkt[10]?**
Java **не позволяет напрямую использовать обобщённые массивы, так как это может привести к проблемам с безопасностью типов. Вместо этого можно использовать метасимвол: Punkt[] arr = new Punkt[10].**
30
**Was sind Collections in Java?**
**Коллекции** — это классы для работы с динамическими структурами данных, такими как списки, очереди, множества и словари.
31
**Welche Typen von Collection-Familien gibt es und wofür sind sie gedacht?**
**Lists:** geordnete Sammlung, Zugriff über Index. **Queues:** Warteschlangenprinzip (FIFO oder LIFO). **Sets:** ungeordnete Sammlung, kein doppelter Eintrag. **Maps:** Schlüssel-Werte-Paare zur Zuordnung.
32
**Wie ist die Java Collection-API organisiert?**
**Jede Collection-Familie hat:** **Eine Schnittstelle:** Definiert mögliche Operationen. **Eine abstrakte Basisklasse:** Implementiert Grundoperationen. **Konkrete Klassen:** Ergänzen spezifische Operationen.
33
**Was macht die Schnittstelle List aus?**
**Операции такие как:** get(int index), add(int index, E element), remove(int index) или contains(E element).
34
**Was ist die Aufgabe der abstrakten Basisklasse AbstractList?**
Он **реализует интерфейс List и служит основой для конкретных реализаций списков.**
35
**Какова цель дженериков в Java?**
**Дженерики позволяют определять классы, интерфейсы и методы с параметрами типа для обеспечения типобезопасности и повторного использования.**
36
**Was ist der Unterschied zwischen ArrayList und LinkedList?**
**ArrayList:** **-** Реализован как массив (статическая структура данных). **-** Быстрый доступ для чтения (доступ через индекс). **-** Медленная вставка или удаление в середине списка, так как элементы необходимо перемещать. **LinkedList:** **-** Реализован как двусвязный список (динамическая структура данных). **-** Медленный доступ для чтения. **-** Быстрая вставка или удаление, так как перемещения элементов не требуется.
37
**Welche Vorteile hat das Programmieren „gegen die Schnittstelle“?**
**Гибкость:** **Код может работать с различными реализациями (например, ArrayList, LinkedList), если они реализуют один и тот же интерфейс (например, List).** ``` List liste = new ArrayList<>(); liste.add("Frieder"); ```
38
**Как Java поддерживает примитивные типы данных в коллекциях?**
**Через авто-боксинг и авто-распаковку:** **Примитивные типы данных (например, int) автоматически преобразуются в классы-обертки (например, Integer).** ``` ArrayList intListe = new ArrayList<>(); intListe.add(4); // Авто-боксинг из int в Integer ```
39
**Welche Schritte sollte man bei der Auswahl einer Datenstruktur in Java beachten?**
**Функциональность:** Какой интерфейс отвечает требованиям? **Пример:** Для последовательных данных подходит интерфейс List. **Производительность:** Какой класс удовлетворяет требованиям производительности? **Пример:** Для быстрого доступа по индексу → ArrayList. Для частых изменений размера → LinkedList.
40
**Какие основные интерфейсы коллекций существуют в Java?**
**List:** Упорядоченная коллекция с доступом по индексам. **Set:** Коллекция без дубликатов. **Map:** Коллекция пар "ключ-значение".
41
**Was ist die Schnittstelle Iterable und welche Methode ist zentral für ihre Funktion?**
**Iterable** — это интерфейс, который позволяет перебирать объекты в цикле for-each.
42
**Wie funktioniert das Iterieren über eine Collection mit einer for-each-Schleife?**
**Цикл for-each использует внутренний Iterator коллекции.** for(String elem : liste) { System.out.println(elem); }
43
**Welche Methoden sind in der Schnittstelle Iterator definiert und wozu dienen sie?**
**hasNext():** Проверяет, есть ли следующие элементы. **next():** Возвращает следующий элемент. **remove():** Удаляет последний возвращённый элемент.
44
**Was ist der Unterschied zwischen der Klasse Collection und der Klasse Collections?**
**Collection:** Базовый интерфейс, от которого наследуются List, Set, Queue и другие. **Collections:** Утилитарный класс со статическими методами, такими как sort(), reverse(), binarySearch(), упрощающими работу с коллекциями.
45
**Was sind die Eigenschaften von StringBuffer und StringBuilder?**
**StringBuffer:** **-** Изменяемые строки. **-** Потокобезопасный. **StringBuilder:** **-** Изменяемые строки. **-** Не потокобезопасный, но быстрее в однопоточных приложениях.
46
**Wie kann eine selbstgeschriebene Klasse für die Verwendung in einer for-each-Schleife vorbereitet werden?**
**-** Класс должен реализовать интерфейс Iterable. **-** Метод iterator() должен быть реализован и возвращать объект Iterator.
47
**Welche Methoden bietet die Klasse Collections für die Manipulation von Listen?**
**-** binarySearch(List> list, T key) **-** copy(List dest, List src) **-** reverse(List list) **-** sort(List list)
48
**Welche Unterschiede bestehen zwischen ArrayList und LinkedList?**
**ArrayList:** **-** Быстрее при доступе к элементам (O(1)). **-** Медленнее при добавлении/удалении в середине (O(n)). **LinkedList:** **-** Быстрее при добавлении/удалении в любой позиции (O(1)). **-** Медленнее при доступе к элементам (O(n)).
49
**Wie erstellt man einen StringBuffer und hängt Zeichenketten an?**
``` StringBuffer sb = new StringBuffer(); sb.append("Anja"); sb.append(" Müller"); System.out.println(sb); // Вывод: Anja Müller ```