Я работал над проблемой стеков на HackerRank ( См. Здесь ).В одной из частей вопроса задается максимальное значение в стеке.Я думал, что простой способ сделать это - написать расширенный класс Stack с помощью метода max () (см. Ниже).Это сработало, но я подумал, что еще более простым способом может быть использование методов коллекций Java.Поэтому я создал метод craftyMax () (также показанный ниже).
class MyStack<T> extends Stack<T> {
public T craftyMax() {
return Collections.max(this);
}
public T max() {
Integer max = Integer.MIN_VALUE;
for (T item: this) {
max = Math.max((Integer)item, max);
}
return (T) max;
}
}
Конечно, это не сработало, так как компилятор ответил:
Solution.java:6: error: no suitable method found for max(MyStack<T#1>)
return Collections.max(this);
^
method Collections.<T#2>max(Collection<? extends T#2>) is not applicable
(inferred type does not conform to upper bound(s)
inferred: T#1
upper bound(s): Comparable<? super T#1>,Object)
method Collections.<T#3>max(Collection<? extends T#3>,Comparator<? super T#3>) is not applicable
(cannot infer type-variable(s) T#3
(actual and formal argument lists differ in length))
where T#1,T#2,T#3 are type-variables:
T#1 extends Object declared in class MyStack
T#2 extends Object,Comparable<? super T#2> declared in method <T#2>max(Collection<? extends T#2>)
T#3 extends Object declared in method <T#3>max(Collection<? extends T#3>,Comparator<? super T#3>)
Note: Solution.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
С тех пор, как я попробовалНесколько разных вещей и смотрю вокруг, но я не могу найти, возможно ли то, что я пытаюсь сделать здесь, или нет.Поэтому мой вопрос:
Можно ли использовать предоставляемые методы коллекций Java, такие как max, min, sort, ect ..., в / внутри стека?Или я ожидаю немного слишком много?