Java движется число между стеками - PullRequest
1 голос
/ 04 апреля 2011

У меня вопрос по поводу использования стека с Java.

Допустим, у меня есть три стека

Stack<Integer> stack1 = new Stack<Integer>();
Stack<Integer> stack2 = new Stack<Integer>();
Stack<Integer> stack3 = new Stack<Integer>();

stack1.push(10);
stack1.push(5);
stack1.push(25);
stack1.push(2);
stack1.push(100);

Я хочу, чтобы эти числа были в порядке от высокого к низкому в стеке3. Так вот stack3 любит как 100, 25, 10, 5, 2

Каков наилучший способ перемещения числа между стеками?

Ответы [ 3 ]

3 голосов
/ 04 апреля 2011

Из-за некоторых неудачных дизайнерских решений в Java можно сделать Collections.sort(stack1), а затем просто выскочить из первого стека и протолкнуть во 2-й.

Но учтите, что начиная с Java 6 предпочтительнее использовать ArrayDeque (или другой Deque) вместо Stack. Со стеком, который не является List, последовательность будет:

  1. Извлеките их всех из первого стека (в List или массиве)
  2. Сортировать их (Collections.sort(..) или Arrays.sort(..))
  3. Вставьте их по порядку в другой стек

Но это все ява-хаки. Если это проблема с домашним заданием, скорее всего, они хотят, чтобы вы реализовали что-то вроде проблемы «Ханойские башни», как отмечает smas.

1 голос
/ 04 апреля 2011

Эта проблема называется: проблема Ханойской башни, попробуйте найти код / ​​описание этого в википедии / Google.

0 голосов
/ 04 апреля 2011

Перефразируя ответ Божо:

    Stack<Integer> stack3 = new Stack<Integer>();
    Integer[] arr = stack.toArray(new Integer[stack.size()]);
    Arrays.sort(arr);
    stack3.addAll(Arrays.asList(arr));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...