Java Collection <generic type =“”>没有集合的排序</generic>

时间:2015-02-04 15:50:36

标签: java collections comparator

我真的被困在学校的任务上。我们正在学习通用类型,也许这不仅仅是我对它们的理解,而是作为我们必须实现的第一个方法之一的一部分:

我们有:

public static <T> T min(Collection<T> c, Comparator<T> comp) {
        return null
}

要求:

Collection c中选择最小值,如下所定义 提供Comparator comp。此方法抛出IllegalArgumentException 如果c或comp为null,如果c则抛出NoSuchElementException 是空的。此方法不会更改Collection c。

所以我到了这里:

public static <T> T min(Collection<T> c, Comparator<T> comp)
            throws IllegalArgumentException, NoSuchElementException {
        if (c != null && comp != null) {
            if (!c.isEmpty()) {

            } else {
                throw new NoSuchElementException();
            }
        } else {
            throw new IllegalArgumentException();
        }
    }

我们必须使用比较器排序,但不能使用Collections类。我真的需要一些指导才能开始,我不是要求你为我做任务!

2 个答案:

答案 0 :(得分:6)

应该很容易。比较器用于比较两个不用于排序的元素。这里不需要排序。您不想更改集合,只需找到最小值。您可以先取一个并迭代集合,将选择元素与其他元素进行比较,将选择元素切换为另一个元素。这是找到最小值的方法。

答案 1 :(得分:2)

您需要添加到示例中的伪代码:

  • 将第一个元素保存在变量调用“minimum”中。由于它被声明为泛型,因此对象的类型为T.
  • 迭代集合(线索:每个集合都有一个迭代器)
  • 将每个元素与找到的“最小值”进行比较。如果低于将其指定为最小值。
  • 返回变量minimum。

我不会把代码放在家庭作业中,你需要熟悉语法。