List呼叫add方法報錯java.lang.UnsupportedOperationException
阿新 • • 發佈:2020-11-13
出現的問題:
從mongodb中查詢出的資料使用List接收之後,再往這個list中追加資料時,丟擲java.lang.UnsupportedOperationException異常
AggregationResults<StatisticHospitalListOfFeeBillVo> aggregationResults = mongoTemplate.aggregate(aggregation, StatisticHospitalListOfFeeBillVo.class); List<StatisticHospitalListOfFeeBillVo> resultList = aggregationResults.getMappedResults(); List<StatisticHospitalListOfFeeBillVo> list = Lists.newArrayList(); if (resultList != null) { resultList.stream().forEach(result -> {result.setHospitalName(hospitalNameMap.get(result.getHid()));hospitalNameMap.remove(result.getHid());}); list.addAll(resultList); } for (Long hid:hospitalNameMap.keySet()) { StatisticHospitalListOfFeeBillVo vo = new StatisticHospitalListOfFeeBillVo(); vo.setHospitalName(hospitalNameMap.get(hid)); vo.setHid(hid);
// 在此處丟擲異常 list.add(vo); }
原因:
在AggregationResults的原始碼中,查詢出來的結果集使用了Collections.unmodifiableList進行包裝,所以返回的list是不能新增或刪除的,原始碼如下
返回了一個不可修改的list