有个这样的List<PerformanceRanking> list PerformanceRanking是实体类,从数据库查询出来的,相当于一个map
把list放进map中 Map<String,List<PerformanceRanking>> 我想把这个map按照实体类中的三个字段作为String。该如何实现呢
class A {
private String id;
private String address;
private int age;
private boolean sex;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getAddress() {
return address;
}
public void setAddress(String address) {
this.address = address;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public boolean isSex() {
return sex;
}
public void setSex(boolean sex) {
this.sex = sex;
}
public A(String id, String address, int age, boolean sex) {
this.id = id;
this.address = address;
this.age = age;
this.sex = sex;
}
}
@Test
public void testA() {
List<A> aList = new ArrayList<>();
A a1 = new A("1", "地址1", 10, false);
aList.add(a1);
A a2 = new A("1", "地址1", 10, true);
aList.add(a2);
A a3 = new A("2", "地址2", 12, false);
aList.add(a3);
A a4 = new A("2", "地址2", 12, true);
aList.add(a4);
Map<String, List<A>> map = aList.stream().collect(Collectors.groupingBy(a -> a.id+"_"+a.address+"_"+a.age, Collectors.toList()));
System.out.println(map);
}
套娃啊,Map<实体类的字段,List<Map<String,PerformanceRanking>>>>
看你的描述应该没有什么难度呀,就像上面说的那样套娃就行了。是不是描述没描述清楚呢
Map<字段,List<Map<String,PerformanceRanking>>>
如果你是放一张表的数据是可以这样套娃的,每一给MAP就是一个字段中的列,key是字段名,value是字段的值,然后每一个List<Map<String,PerformanceRanking>>>就是表中的一行数据,list有多少给下标就表示有多少行数据
list 能这样??
List<String,PerformanceRanking>
这是Debug执行的值
key你可以随意定义
这是没有简写过的代码
如果你能确定list中不是重复的就用
aList.stream().Map(a -> a.id+"_"+a.address+"_"+a.age).collect(Collectors.toList());
否则就要進行分組
aList.stream().collect(Collectors.groupingBy(a -> a.id+"_"+a.address+"_"+a.age, Collectors.toList()));