将list连续且相同的数分组or合并--workflow会签节点流程轨迹展示

 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日

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值