有关list根据不同的条件,存储的对应信息数量不同
需求大致是这样的 :我需要根据用户上传的Excel信息,解析出对应的实体信息,比如 ID :100,对应的bookID 有:2121,324,423;总之就是一对多的关系。
解决思路: 我这里是创建了一个map<String ,Set集合,其中的key就是对应的ID,value对应着bookId。
public List<HotellistHotelarray> getHotelIdsByExcel(MultipartFile multipartFile){ List<HotellistHotelarray> resultList=new ArrayList<>(); //创建map集合 用于存储对应的酒店id信息 Map<String,Set<Long>> map=new HashMap<>(); //调用方法,获取上传的excel信息 BaseResponseModel<Map<String, List<HotelExcelPo>>> model = this.addHotellistInfoByExcel(multipartFile); Map<String, List<HotelExcelPo>> listMap = model.getT(); for (String key : listMap.keySet()) { HotellistHotelarray hotelarray = new HotellistHotelarray(); //获取对应的map值 List<HotelExcelPo> hotelExcelPoList = listMap.get(key); for (HotelExcelPo hotelExcelPo : hotelExcelPoList) { hotelarray.setCityid(key); if (map.containsKey(key)) { map.get(key).add(hotelExcelPo.getHotelId()); Set<Long> hotelIds = map.get(key); String join = StringUtils.join(hotelIds, ","); hotelarray.setHotelarray(join); } else { HashSet<Long> hashSet = new HashSet<>(); hashSet.add(hotelExcelPo.getHotelId()); map.put(key, hashSet); Set<Long> hotelIds = map.get(key); String join = StringUtils.join(hotelIds, ","); hotelarray.setHotelarray(join); } } resultList.add(hotelarray); } return resultList; }