我有一个数据结构Stack.Where堆栈内的堆栈。
Stack<Stack<Integer>> stack = new Stack<>();
Stack<Integer> stackI1 = new Stack<>();
Stack<Integer> stackI2 = new Stack<>();
Stack<Integer> stackI3 = new Stack<>();
我已经将一些元素推入其中。看起来像[[1,2,3],[4,5,6],[7,8,9]] 现在我想将那些元素方面排序到第一个值意味着对1,4,7。怎么可能?无法找到功能。无法使用Collection.sort进行排序。那么替代方案将在哪里。也需要在排序后反转。但是无法在函数Collection.reverse中进行反转。请帮帮我
答案 0 :(得分:1)
Stack
扩展了Vector
,因此您可以使用List#sort
来诉诸Stack
(如评论中所述,这非常“不寻常”)。您提供的值导致已经“排序”的堆栈,因此我更改了它以显示代码对其产生的影响:
import java.util.Stack;
public class StackSort {
public final static void main(String[] args) {
Stack<Stack<Integer>> stacks = new Stack<>();
Stack<Integer> stackI1 = new Stack<>();
stackI1.push(Integer.valueOf(1));
stackI1.push(Integer.valueOf(2));
stackI1.push(Integer.valueOf(3));
Stack<Integer> stackI2 = new Stack<>();
stackI2.push(Integer.valueOf(7));
stackI2.push(Integer.valueOf(8));
stackI2.push(Integer.valueOf(9));
Stack<Integer> stackI3 = new Stack<>();
stackI3.push(Integer.valueOf(4));
stackI3.push(Integer.valueOf(5));
stackI3.push(Integer.valueOf(6));
stacks.push(stackI1);
stacks.push(stackI2);
stacks.push(stackI3);
System.out.println(stacks);
stacks.sort((stack1, stack2) -> {
if (stack1.isEmpty()) {
return stack2.isEmpty() ? -1 : 0;
}
if (stack2.isEmpty()) {
return 1;
}
return stack1.get(0).compareTo(stack2.get(0));
});
System.out.println(stacks);
}
}