我的数据结构和使用Java的问题解决一书中存在以下问题:
编写一个使用Collections API的例程,以相反的顺序打印出任何Collection中的项目。不要使用ListIterator。
我不是把它放在这里,因为我希望有人做我的作业,我似乎无法理解它要求我编码的确切内容!
当它要求我写一个'例程'时,它是否在寻找一种方法?我真的不明白如何使单个方法适用于所有各种类型的集合(链表,队列,堆栈)。
如果有人能指引我朝正确的方向发展,我将不胜感激。
答案 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()或类似的方法。