public static void main(String[] args) {
// 它实现了一个标准的后进先出的栈
int[] arr=new int[]{1,2,2,4,1,1,2};
List<Stack> stackList = new ArrayList<>();
Stack stack = new Stack();
stackList.add(stack);
for (int i = 0; i < arr.length ; i++) {
if (stack.isEmpty()) {
stack.push(arr[i]);
} else {
if ((arr[i]) != (int) stackList.get(stackList.size() - 1).peek()) {
stack = new Stack();
stack.push(arr[i]);
stackList.add(stack);
} else {
stackList.get(stackList.size() - 1).push(arr[i]);
}
}
}
System.out.println(Arrays.toString(stackList.toArray()));
}
应用:工作流其中的会签节点整合为一个轨迹节点(同意会签节点task_node_name相同)
============================
2024年4月24日
// Stack(遗留类)可用Deque stack = new ArrayDeque(); 代替
public static void sorttt() {
List<String> arr =Arrays.asList("001","002","004","006","007","008","009","011");
// 它实现了一个标准的后进先出的栈
// int[] arr=new int[]{1,2,2,4,1,1,2};
List<Deque> stackList = new ArrayList<>();
Deque stack = new ArrayDeque();
stackList.add(stack);
for (int i = 0; i < arr.size() ; i++) {
if (stack.isEmpty()) {
//第一个 后进先出
stack.addLast(arr.get(i));
} else {
if (Convert.toInt(arr.get(i))-Convert.toInt(stackList.get(stackList.size() - 1).peekLast())!=1) {
stack = new ArrayDeque();
stack.addLast(arr.get(i));
stackList.add(stack);
} else {
stackList.get(stackList.size() - 1).addLast(arr.get(i));
}
}
}
System.out.println(Arrays.toString(stackList.toArray()));
List<String> resList=new ArrayList<>();
for (Deque stack1 : stackList) {
Object a = stack1.peekFirst();
Object b = stack1.peekLast();
System.out.println("====a:"+a);//最后一个
System.out.println("====b:"+b);
System.out.println("==============");
}
}
2024年4月24日