复盘工作2024-10

平凡力量 / 2024-10-06 / 原文

复盘工作-2024-10-06

1.关于对通过Arrays.asList()获得的list执行.removeAll会报错:需先创建支持修改的集合(例如ArrayList再removeAll)

/**
         * 练习:关于对通过Arrays.asList()获得的list执行.removeAll会报错:需先创建支持修改的集合(例如ArrayList再removeAll)
         */
        // 假设该数组为前端传来,并处理后的 (前端已选的且去重的)任务负责人id 数组
        String[] distinctRwFzrIdArr = {"1", "2", "3", "4", "5"};
        // 已下发工作票的负责人id list,应从数据库查出,这里简写直接手动赋值
        List yxfGzpFzrIdList = new ArrayList<>();
        yxfGzpFzrIdList.add("2");
        yxfGzpFzrIdList.add("4");
        // 模拟我一开始的错误写法:会报错:java.lang.UnsupportedOperationException
        // 错误写法:List<String> distinctRwFzrIdList = Arrays.asList(distinctRwFzrIdArr);
        // 错误写法:distinctRwFzrIdList.removeAll(yxfGzpFzrIdList);
        // 解析:报错:java.lang.UnsupportedOperationException:意为:正在尝试对一个不支持该操作的数据结构执行某个操作。
        // 不能对不可修改的集合进行.removeAll操作。通过Arrays.asList()操作得到的是不可修改的list。
        // 解决方案:使用支持修改的集合。可以通过创建一个新的支持修改的集合(例如ArrayList)来避免这个错误:
        List<String> distinctRwFzrIdList = new ArrayList<>(Arrays.asList(distinctRwFzrIdArr));
        distinctRwFzrIdList.removeAll(yxfGzpFzrIdList);
        System.out.println("======================");
        System.out.println("移除已下发任务负责人id后的 任务负责人id list:");
        // 结果:1 3 5
        for (String rwFzrId : distinctRwFzrIdList) {
            System.out.println("rwFzrId: " + rwFzrId);
        }
        System.out.println("======================");