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;
// дополнительные методы и поля
}</T>

~~~

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
Q

Geben Sie ein Beispiel für Typ-Inferenz.

A

Object s = GenericMethods.random(“Kuchen”, 5);
Comparable c = GenericMethods.random(“Kuchen”, 5);

26
Q

Warum sind generische Methoden praktisch?

A

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

27
Q

Was ist der Unterschied zwischen einem formalen Typparameter T und einer Wildcard ?

A

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

28
Q

Was ist eine unbounded Wildcard und wofür wird sie verwendet?

A

Неограниченный метасимвол (?) не имеет ограничений и используется для создания ссылок на объекты любых типов.

29
Q

**Почему нельзя напрямую определять обобщённые массивы, например, Punkt<Double>[] arr = new Punkt<Double>[10]?**</Double></Double>

A

Java не позволяет напрямую использовать обобщённые массивы, так как это может привести к проблемам с безопасностью типов. Вместо этого можно использовать метасимвол: Punkt<?>[] arr = new Punkt<?>[10].

30
Q

Was sind Collections in Java?

A

Коллекции — это классы для работы с динамическими структурами данных, такими как списки, очереди, множества и словари.

31
Q

Welche Typen von Collection-Familien gibt es und wofür sind sie gedacht?

A

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
Q

Wie ist die Java Collection-API organisiert?

A

Jede Collection-Familie hat:

Eine Schnittstelle: Definiert mögliche Operationen.
Eine abstrakte Basisklasse: Implementiert Grundoperationen.
Konkrete Klassen: Ergänzen spezifische Operationen.

33
Q

**Was macht die Schnittstelle List<E> aus?**</E>

A

Операции такие как: get(int index), add(int index, E element), remove(int index) или contains(E element).

34
Q

**Was ist die Aufgabe der abstrakten Basisklasse AbstractList<E>?**</E>

A

Он **реализует интерфейс List<E> и служит основой для конкретных реализаций списков.**</E>

35
Q

Какова цель дженериков в Java?

A

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

36
Q

Was ist der Unterschied zwischen ArrayList und LinkedList?

A

ArrayList:

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

LinkedList:

- Реализован как двусвязный список (динамическая структура данных).
- Медленный доступ для чтения.
- Быстрая вставка или удаление, так как перемещения элементов не требуется.

37
Q

Welche Vorteile hat das Programmieren „gegen die Schnittstelle“?

A

Гибкость:
Код может работать с различными реализациями (например, ArrayList, LinkedList), если они реализуют один и тот же интерфейс (например, List).

List<String> liste = new ArrayList<>();
liste.add("Frieder");
38
Q

Как Java поддерживает примитивные типы данных в коллекциях?

A

Через авто-боксинг и авто-распаковку:
Примитивные типы данных (например, int) автоматически преобразуются в классы-обертки (например, Integer).
~~~
ArrayList<Integer> intListe = new ArrayList<>();
intListe.add(4); // Авто-боксинг из int в Integer
~~~</Integer>

39
Q

Welche Schritte sollte man bei der Auswahl einer Datenstruktur in Java beachten?

A

Функциональность: Какой интерфейс отвечает требованиям?
Пример: Для последовательных данных подходит интерфейс List.

Производительность: Какой класс удовлетворяет требованиям производительности?
Пример: Для быстрого доступа по индексу → ArrayList.
Для частых изменений размера → LinkedList.

40
Q

Какие основные интерфейсы коллекций существуют в Java?

A

List: Упорядоченная коллекция с доступом по индексам.
Set: Коллекция без дубликатов.
Map: Коллекция пар “ключ-значение”.

41
Q

Was ist die Schnittstelle Iterable und welche Methode ist zentral für ihre Funktion?

A

Iterable — это интерфейс, который позволяет перебирать объекты в цикле for-each.

42
Q

Wie funktioniert das Iterieren über eine Collection mit einer for-each-Schleife?

A

Цикл for-each использует внутренний Iterator коллекции.

for(String elem : liste) {
System.out.println(elem);
}

43
Q

**Welche Methoden sind in der Schnittstelle Iterator<E> definiert und wozu dienen sie?**</E>

A

hasNext(): Проверяет, есть ли следующие элементы.
next(): Возвращает следующий элемент.
remove(): Удаляет последний возвращённый элемент.

44
Q

Was ist der Unterschied zwischen der Klasse Collection und der Klasse Collections?

A

Collection: Базовый интерфейс, от которого наследуются List, Set, Queue и другие.
Collections: Утилитарный класс со статическими методами, такими как sort(), reverse(), binarySearch(), упрощающими работу с коллекциями.

45
Q

Was sind die Eigenschaften von StringBuffer und StringBuilder?

A

StringBuffer:
- Изменяемые строки.
- Потокобезопасный.
StringBuilder:
- Изменяемые строки.
- Не потокобезопасный, но быстрее в однопоточных приложениях.

46
Q

Wie kann eine selbstgeschriebene Klasse für die Verwendung in einer for-each-Schleife vorbereitet werden?

A

- Класс должен реализовать интерфейс Iterable.
- Метод iterator() должен быть реализован и возвращать объект Iterator<E>.</E>

47
Q

Welche Methoden bietet die Klasse Collections für die Manipulation von Listen?

A

- binarySearch(List<? extends Comparable<? super T» list, T key)
- copy(List<? super T> dest, List<? extends T> src)
- reverse(List<?> list)
- sort(List<T> list)</T>

48
Q

Welche Unterschiede bestehen zwischen ArrayList und LinkedList?

A

ArrayList:
- Быстрее при доступе к элементам (O(1)).
- Медленнее при добавлении/удалении в середине (O(n)).
LinkedList:
- Быстрее при добавлении/удалении в любой позиции (O(1)).
- Медленнее при доступе к элементам (O(n)).

49
Q

Wie erstellt man einen StringBuffer und hängt Zeichenketten an?

A
StringBuffer sb = new StringBuffer();
sb.append("Anja");
sb.append(" Müller");
System.out.println(sb); // Вывод: Anja Müller