以相反顺序打印任何收藏中的项目?

时间:2008-10-13 03:20:09

标签: java collections

我的数据结构和使用Java的问题解决一书中存在以下问题:

  

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

我不是把它放在这里,因为我希望有人做我的作业,我似乎无法理解它要求我编码的确切内容!

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

如果有人能指引我朝正确的方向发展,我将不胜感激。

5 个答案:

答案 0 :(得分:18)

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

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

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

答案 1 :(得分:2)

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

void printReverseList(Collection col) {}

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

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

答案 2 :(得分:0)

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

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

答案 3 :(得分:0)

是否有基础Collection类?

可能值得一看这里作为起点...

http://java.sun.com/j2se/1.4.2/docs/api/java/util/Collections.html

答案 4 :(得分:0)

我不太了解Java,但考虑到“Collections API”,我想所有这些对象都实现了一个可以迭代的接口。我想他们都可以使用itemAtIndex(int index)和length()或类似的方法。

You might want to read this.