Java 集合<Generic Type> 不使用集合进行排序

Java Collection<Generic Type> Sorting without Collections

我真的被学校作业困住了。我们正在学习泛型类型,也许这不仅仅是我完全理解它们,而是作为我们必须实现的第一个方法之一的一部分:

我们有:

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

以及要求:

Collection c 中选择最小值,由 提供 Comparator comp。此方法抛出 IllegalArgumentException 如果 c 或 comp 为 null,则抛出 NoSuchElementException if c 是空的。 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();
        }
    }

我们必须使用比较器进行排序,但不能使用集合 class。我真的只是需要一些指导才能开始,我不是要你帮我做作业!

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

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

  • 保存变量调用中的第一个元素"minimum"。因为它被声明为泛型,所以对象的类型是 T.
  • 迭代集合(提示:每个集合都有一个迭代器)
  • 将每个元素与找到的 "minimum" 进行比较。如果低于则分配给最小值。
  • Return 变量最小值。

我不会放代码,因为这是作业,你需要熟悉语法。