CS61B Proj1 Deque 3: MaxArrayDeque

213 阅读1分钟

MaxArrayDeque

MaxArrayDeque

MaxArrayDeque继承了ArrayDqeue的所有方法

我们需要编写它的两个附加方法和一个新的构造函数: 没有任何的运行要求, 只要求结果正确.

1. public MaxArrayDeque(Comparator c)

使用c创建了一个MaxArrayDeqeue.

本质上就是增加一个比较器可以和其他对象比较.

private final Comparator<T> comparator;

public MaxArrayDeque(Comparator<T> c) {
    comparator = c;
}

2. public T max(Comparator c)

返回控制的双端队列中的最大元素.

  1. 如果为空, 返回null.
  2. 如果不为空, 依次比较返回最大的值.
public T max(Comparator<T> c) {
    if (isEmpty()) {
        return null;
    }
    T max = get(0);
    for(T e: this) {
        if (c.compare(e, max) > 0) {
            max = e;
        }
    }
    return max;
}

3. public T max()

返回c控制的双端队列中的最大元素, 如果为空, 返回null 直接作为max(Comparator c)抽象障碍的上层即可.

public T max() {
    return max(comparator);
}