复盘工作-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("======================");
标签:10,distinctRwFzrIdList,Arrays,removeAll,ArrayList,list,2024,复盘,asList From: https://www.cnblogs.com/pingfanliliang/p/18449195