Распечатывать предметы в любой коллекции в обратном порядке? - PullRequest
7 голосов
/ 13 октября 2008

В моей Структуре данных и решении проблем с использованием Java book есть следующая проблема:

Напишите процедуру, которая использует API Коллекций для распечатки элементов в любой Коллекции в обратном порядке. Не используйте ListIterator.

Я не выставляю это здесь, потому что я хочу, чтобы кто-то сделал мою домашнюю работу, я просто не могу понять, что именно просит меня написать!

Когда он просит меня написать «рутину», он ищет единственный метод? Я не совсем понимаю, как заставить один метод работать для всех типов коллекций (связанный список, очередь, стек).

Если бы кто-нибудь мог направить меня в правильном направлении, я был бы очень признателен.

Ответы [ 5 ]

18 голосов
/ 13 октября 2008

Независимо от того, что вопрос не имеет особого смысла, поскольку половина коллекций не имеет gstable-упорядочения с фиксированным упорядочением (т.е. TreeSet или PriorityQueue), вы можете использовать следующую инструкцию для печати содержимого коллекции в обратном натуральном порядке :

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

По сути, вы создаете список массивов, поскольку списки являются единственной структурой, которая может быть произвольно переупорядочена. Вы передаете коллекцию src в конструктор, который инициализирует список с содержимым src в естественном порядке коллекции. Затем вы передаете список методу Collections.reverse () , который переворачивает список и, наконец, печатает его.

2 голосов
/ 13 октября 2008

Во-первых, я считаю, что он просит вас написать метод. Как:

void printReverseList(Collection col) {}

Тогда есть много способов сделать это. Например, только используя API-интерфейс Collection, используйте метод toArray и используйте цикл for, чтобы распечатать все элементы с конца. Имеет смысл?

Что касается различных классов, использующих интерфейс Collection, он будет автоматически работать для всех из них, поскольку они должны реализовывать интерфейс (при условии, что они реализуют его разумным способом;).

0 голосов
/ 13 октября 2008

Я не очень хорошо знаю Java, но, учитывая «API коллекций», я представляю, что все эти объекты реализуют интерфейс, через который вы могли бы пройти каким-то образом. я полагаю, что все они могут иметь itemAtIndex (int index) и length () или аналогичный метод, который вы можете использовать.

Возможно, вы захотите прочитать это.

0 голосов
/ 13 октября 2008

Разве нет базового класса Collection?

Вероятно, стоит посмотреть сюда как отправную точку ...

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

0 голосов
/ 13 октября 2008

Хорошо, у вас может быть подпрограмма, которая делегирует другим подпрограммам на основе типа ввода, однако я не уверен, что существует достаточно универсальный тип коллекции, который можно охватить одним аргументом. Я думаю, вы могли бы просто использовать перегрузку методов (иметь несколько методов с одинаковым именем, но принимать разные аргументы).

Это технически может считаться 1 подпрограммой (все имеют одно и то же имя).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...