今天有一个新需求, 是对一个List进行分组, 于是便百度到一些可用的代码以及我们项目使用的一些tools, 在这里总结下方便以后查阅.
一: 需求
现在我们一个数据库表t_series_value_rate存储的是每个汽车对应的保值率. 其中一个车系id可以对应多条数据.表内容部分截取如下:
其中series_id是车系id, car_year代表这个车的年限. 比如说车系id为1的车1年的保值率为81.5%, 2年的保值率为73.7%.
那么现在我需要传递过来一个series_id list去查询出相应的数据, 我们是对数据库表t_series_value_rate查询所有做了缓存的, 如果我们对传入的series_id list进行遍历的话势必会很慢. 所以如果能够根据series_id进行分组的话, 那么效率就会高的多.
二: 代码示例
对外暴漏的API接口, 方便别的项目调用:
public List<HashMap<Long, List<SeriesValueRateDTO>>> listSeriesValueRates(List<Long> seriesIds) throws Exception { ApiResponse response = httpGet("/api/server/series-value-rates/list-series-value-rates.htm?seriesIds=" + Joiner.on(",").skipNulls().join(seriesIds)); return JSON.parseObject(response.getJsonObject().get("data").toString(), new TypeReference<List<HashMap<Long, List<SeriesValueRateDTO>>>>(){}); }
这里我们传入的是一个车系id集合.
然后继续往下调用:
public List<SeriesValueRateDTO> listSeriesValueRate(final long seriesId) { String key = "listSeriesValueRate" + seriesId; return managerService.get(key, new Callable<List<SeriesValueRateDTO>>() { @Override public List<SeriesValueRateDTO> call() throws Exception { Map<Long, List<SeriesValueRateDTO>> valueRateDTOs =