【问题标题】:Printing out items in any Collection in reverse order?以相反的顺序打印出任何集合中的项目?
【发布时间】:2008-10-13 03:20:08
【问题描述】:

我的Data Structures and Problem Solving using Java一书中有以下问题:

编写一个例程,使用 Collections API 以相反的顺序打印出任何 Collection 中的项目。不要使用 ListIterator。

我没有把它放在这里,因为我希望有人做我的作业,我似乎无法准确理解它要求我编写什么代码!

当它要求我写一个“例程”时,它是在寻找一个单一的方法吗?我真的不明白如何让一个方法适用于所有各种类型的集合(链表、队列、堆栈)。

如果有人能指导我正确的方向,我将不胜感激。

【问题讨论】:

    标签: java collections


    【解决方案1】:

    尽管问题没有多大意义,因为一半的集合没有固定排序的 gstable 排序(即 TreeSet 或 PriorityQueue),您可以使用以下语句以逆自然顺序打印集合的内容:

    List temp = new ArrayList(src);
    Collections.reverse(temp);
    System.out.println(temp);
    

    我本质上是创建一个数组列表,因为列表是唯一可以任意重新排序的结构。您将 src 集合传递给构造函数,该构造函数以集合自然顺序使用 src 的内容初始化列表。然后将列表传递给 Collections.reverse() 方法,该方法反转列表并最终打印它。

    【讨论】:

      【解决方案2】:

      首先,我相信它要求你写一个方法。喜欢:

      void printReverseList(Collection col) {}
      

      那么有很多方法可以做到这一点。例如,仅使用 Collection API,使用 toArray 方法并使用 for 循环从末尾打印出所有项目。有意义吗?

      对于使用 Collection 接口的各种类,它将自动适用于所有这些类,因为它们必须实现该接口(前提是它们以一种理智的方式实现它;)。

      【讨论】:

        【解决方案3】:

        好吧,您可以有一个基于输入类型委托给其他例程的例程,但是我不确定是否有一个足够通用的集合类型可以包含在一个参数中。我猜你可以只使用方法重载(有多个同名的方法,但接受不同的参数)。

        这在技术上可以算作 1 个例程(都具有相同的名称)。

        【讨论】:

          【解决方案4】:

          我不太了解 Java,但考虑到“集合 API”,我想所有这些对象都实现了一个接口,您可以通过某种方式进行迭代。我想他们都可以有一个 itemAtIndex( int index ) 和 length() 或者你可以使用的类似方法。

          You might want to read this.

          【讨论】:

            【解决方案5】:

            没有基础的 Collection 类吗?

            可能值得从这里开始:Collections

            【讨论】:

              猜你喜欢
              • 2021-11-21
              • 1970-01-01
              • 2021-08-23
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              • 2019-12-06
              • 2019-06-25
              相关资源
              最近更新 更多