利用 Collectors.groupingBy分組,簡單實用,上demo
public static void main(String[] args) {
List<ProArea> infoVOS = Lists.newArrayList();
ProArea sd = new ProArea("山東", "濟南", "縣城1");
ProArea sd1 = new ProArea("山東", "濟南", "縣城2");
ProArea yt = new ProArea("山東", "煙臺", "縣城3");
ProArea cs = new ProArea("湖南", "長沙", "縣城4");
ProArea xt = new ProArea("湖南", "湘潭", "縣城5");
ProArea xt2 = new ProArea("湖南", "湘潭", "縣城6");
infoVOS.add(sd);
infoVOS.add(sd1);
infoVOS.add(yt);
infoVOS.add(cs);
infoVOS.add(xt);
infoVOS.add(xt2);
Map<String, Map<String, List<ProArea>>> infoMap = infoVOS.stream()
.collect(Collectors.groupingBy(ProArea::getPro, Collectors.groupingBy(ProArea::getAre)));
System.out.println(JSON.toJSONString(infoMap));
}
@Data
static class ProArea {
private String pro;//省份
private String are;//地市
private String pre;//縣
public ProArea(String pro, String are, String pre) {
this.pro = pro;
this.are = are;
this.pre = pre;
}
}
輸出的JSON:
{
"山東": {
"濟南": [
{
"are": "濟南",
"pre": "縣城1",
"pro": "山東"
},
{
"are": "濟南",
"pre": "縣城2",
"pro": "山東"
}
],
"煙臺": [
{
"are": "煙臺",
"pre": "縣城3",
"pro": "山東"
}
]
},
"湖南": {
"湘潭": [
{
"are": "湘潭",
"pre": "縣城5",
"pro": "湖南"
},
{
"are": "湘潭",
"pre": "縣城6",
"pro": "湖南"
}
],
"長沙": [
{
"are": "長沙",
"pre": "縣城4",
"pro": "湖南"
}
]
}
}
評論裏說報錯,但沒說報什麼錯。我想大概是因爲不知道代碼中用到的技術Jar包,附加如下:
import com.alibaba.fastjson.JSON;
import com.google.common.collect.Lists;
import lombok.Data;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;