В классе PriorityQueue
определен конструктор, который принимает аргументом Collection
. В этом конструкторе имеется проверка аргумента на соответствие типамSortedSet
и PriorityQueue
:
public PriorityQueue(Collection<? extends E> c) {
if (c instanceof SortedSet<?>) {
SortedSet<? extends E> ss = (SortedSet<? extends E>) c;
this.comparator = (Comparator<? super E>) ss.comparator();
initElementsFromCollection(ss);
}
else if (c instanceof PriorityQueue<?>) {
PriorityQueue<? extends E> pq = (PriorityQueue<? extends E>) c;
this.comparator = (Comparator<? super E>) pq.comparator();
initFromPriorityQueue(pq);
}
else {
this.comparator = null;
initFromCollection(c);
}
}
С какой целью тогда разработчики класса добавили отдельные конструкторы, принимающие в аргументе SortedSet
:
public PriorityQueue(SortedSet<? extends E> c) {
this.comparator = (Comparator<? super E>) c.comparator();
initElementsFromCollection(c);
}
и PriorityQueue
:
public PriorityQueue(PriorityQueue<? extends E> c) {
this.comparator = (Comparator<? super E>) c.comparator();
initFromPriorityQueue(c);
}
instanceof
- достаточно затратная операция. И если мы сразу присылаем SortedSet
или PriorityQueue
, то нет смысла тратить на это время. А вот если мы прислали Collection
, то, какая конкретно пришла коллекция, никому не известно.
Виртуальный выделенный сервер (VDS) становится отличным выбором
Есть ли в Java функция, аналогичная функции exec в Python? Нигде не могу найти внятного ответа - есть или нетЕсли есть, то хорошо было бы ее назвать
В RethinkDB нужно сохранить документ, в котором содержится несколько полей с датамиПо этим датам нужно будет искать документы в RethinkDB
На что влияет параметр 1 в recyclerViewcanScrollVertically(1)
Обьясните значение этого конструкотора, зачем он нужен и что он делает?