62,615
社区成员
发帖
与我相关
我的任务
分享
public class Test {
public static void main(String[] args) {
List<Item> ll = new ArrayList<>();
ll.add(new Item("a", "shanghai"));
ll.add(new Item("a", "henan"));
ll.add(new Item("a", "hunan"));
ll.add(new Item("b", "beijing"));
ll.add(new Item("b", "tianjin"));
ll.add(new Item("c", "shanghai"));
final String prefix = "test.";
Map<String, List<Item>> map= ll.stream().collect(Collectors.groupingBy(item -> {
return item.getName(prefix);
}));
System.out.println(JSON.toJSONString(map));
}
}
class Item {
private String name;
private String city;
public Item(String name, String city) {
super();
this.name = name;
this.city = city;
}
public String getName(String prefix) {
return prefix + name;
}
public void setName(String name) {
this.name = name;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
}
结果如下:{
"test.c":[
{
"city":"shanghai"
}
],
"test.b":[
{
"city":"beijing"
},
{
"city":"tianjin"
}
],
"test.a":[
{
"city":"shanghai"
},
{
"city":"henan"
},
{
"city":"hunan"
}
]
}
因为没有name的无参get方法,所以json里面没有该字段