Java2 Flashcards

1
Q

Как добавить элемент в Set?

A

name_of_set.add(1);

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

Если нужно добавить в Map или Set в качестве ключа собственный объект, что нужно сделать перед этим?

A

перезаписать методы hashcode() и equals(), чтобы Java понимала, что объекты разные.

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

В каком порядке вызываются методы equals() и hashcode(), когда мы сравниваем объекты?

A

Сначала hashcode, если он “отработал” правильно, но этом заканчиваем проверку, если не т- equals();

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

Как называется, когда хеши объектов одинаковые, а сами объекты разные ?

A

Коллизия. hashCode() возвращает int, а размер int ограничен. Поэтому необходим метод equals().

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

Что значит, если метод hashCode() выдал два разных числа?

A

Объект точно разные.

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

Что лежит в основе hashSet?

A

hashMap, ключи которого всегда являются объектами класса objekt и просто скрыты.

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

Чем на самом деле являются значения в HashSet?

A

Ключами HashMap, с отрезанными значениями.

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

Что является “ячейкой” для HashMap? Что хранится в каждой ячейке?

A

Массив.

Связный список.

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

Как добавить свою логику сортировки объектов?

A

Мы должны создать новый класс, который реализует интерфейс Comparator.

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

Сколько методов имеет интерфейс Comparator?

A

Всего один - compare();

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

Что нужно сделать для того, чтобы реализовать свою логику сортировки?

A

Создать класс, с реализацией интерфейса Comparator и передать его объект в метод Collection.sort();

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

Когда класс имплементирует интерфейс Comparator, о чем нужно не забыть?

A

Что интерфейс параметризованный, нужно указать тип.

class X implements Comparator {

}

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

Где находится вся логика сортировки в классе, имплементирующем Comparator?

A

в методе Compare ();

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

Что представляет собой конвенция для метода Compare() интерфейса Comparator?

A

Метод compare(x1,x2) имеет два параметра и возвращаемый тип int :

если х1 > x2 => 1;
x1 < x2 => -1;
x1 == x2 => 0;

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

Какая вариация метода Collection.sort () нужна для реализации своей логики сортировки?

A

Collection.sort() c двумя параметрами, где первый - сортируемый объект, второй - объект класса, имплементирующего интерфейс Comparator с перезаписанным методом Compare;

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

Как использовать анонимный класс для создания своей логики сортировки?

A
Collection.sort(сортируемый_array, new Comparator  {
    @Override
    //перезапись Compare 
});
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Как “дать понять” JAVE, что объекты определенного класса годятся для сортировки, т.е. объекты можно сравнивать между собой?

A

Класс должен имплементировать интерфейс Comparable

18
Q

Какой метод нужно перезаписать, имплементируя интерфейс Comparable?

A

compareTo();

19
Q

Что иы делаем, имплементируя интерфейс Comparable?

A

Задаем для класса естественный порядок сортировки

20
Q

Какие два метода существуют для добавления объектов в Queue, в очередь?

A

add();

offer();

21
Q

Какие два метода существуют для изъятия объектов из очереди?

A

remove();

poll();

22
Q

Как ограничить максимальный размер очереди?

A

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

23
Q

Что делает методsы remove() и poll() в Queue?

A

вызовет элемент в голове списка и удалит его.

24
Q

Какая разница между парами add() и offer(); remove() и poll(); element() и peek(); ? в Queue?

A

Первые выбрасывают исключения, вторые специальные значения ( у метода offer - false)

25
Q

По какому принципу работает класс Stack?

A

LIFO

26
Q

Какой метод добавляет элемент в Stack?

Какой метод достает элемент из Stack?

A

name_of_stack.push(value);

pop();

27
Q

Как создать итератор?

A

Iterator it = имя_коллекции.iterator();
дальше можно вызывать методы:
it.next();
it.hasNext();

28
Q

Несмотря на то, что Цикл for each имеет под капотом Iterator, какое существенное различие есть между ними?

A

Iterator способен менять коллекцию во время того, как проходится по ней, а for each нет.

29
Q

Как запустить код в отдельном потоке?

A
  1. Создать класс, наследующийся от Thread.
  2. В нем переопределить метод Run(), вписав в него наш код
  3. В методе main вызвать метод start(); на объекте нашего класса;
class MyThread extends Thread {
    public void run() {
        //наш код
    }
}
30
Q

Как заставить поток “заснуть” на определенное время? На одну секунду.

A

В потоке написать:

Thread.sleep(1000);

31
Q

Как создать поток с помощью интерфейса Runnable?

A

1) Создать класс, имплементирующий интерфейс Runnable;
class Runner extends Runnable { }
2) Переопределить метод Run() с подходящей нам логикой.
3) Создать объект базисного класса
и в конструктр передаем new + объект нашего созданного класса: Thread thread = new Thread(new Runner());
4) Вызвать метод thread.start();

32
Q

Где пишется ключевое слово synchronized?

A

в теле метода, оно говорит, что тело метода может одновременно исполняться только одним потоком

33
Q

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

A

объект, на котором вызывается этот метод.

34
Q

Как в методе ограничить код, который должен быть синхронизирован, с помощью synchronized блока?

A
public void increment (this) {
    synchronized() {
         count++;
    }
}
35
Q

Как выглядит создание потока с помощью анонимного класса?

A
public void myMethod() {
    Thread thread = new Thread(new Runnable () {
        //переопределение метода Run()
    }
}
36
Q

Какой метод гарантирует, что поток закончит свою работу и только потом запустится следующий?

A

имя_потока.join();

37
Q

Где возможно написание ключевого слова synchronized?

A

Только в методах.

38
Q

Что значит написанное в сигнатуре метода слово synchronized?

A

Что доступ к телу метода одновременно может получить только один поток.

39
Q

Какое обязательно условие для употребления слова synchronized?

A

Должен быть объект.

40
Q

Как генерировать случайные числа в определенном промежутке?

A
Random random = new Random();
int i = random.nextInt(100);
41
Q

Два способа, как явно создать поток в Java?

A

Унаследоваться от класса Thread, создать объект этого класса

Создать объект класса Thread и передать ему в конструктор объект реализующий интерфейс Runnable;