1.新建一个实体类
public class MailTest {
private String id; //id
private String recipient; //邮件接收人
private String subject; //邮件主题
private String content; //邮件内容
List<MailTest> listTest;
public MailTest(String id,String recipient,String subject,String content){
this.id=id;
this.recipient=recipient;
this.subject=subject;
this.content=content;
}
新建一个测试类
package jesper.search.test;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.stream.Collectors;
public class Java8Stream {
/**
* 对mailList 进行分类
* @param args
*/
public static void main(String[] args){
List<MailTest> mailList=new ArrayList<MailTest>();
mailList.add(new MailTest("11","1","我","啊啊1"));
mailList.add(new MailTest("22","2","我","啊啊2"));
mailList.add(new MailTest("33","3","我","啊啊3"));
mailList.add(new MailTest("44","1","我","啊啊4"));
mailList.add(new MailTest("55","1","你","啊啊5"));
mailList.add(new MailTest("66","3","我","啊啊6"));
Map<String,List<MailTest>> mailList1=mailList.stream().collect(Collectors.groupingBy(MailTest::getRecipient));
mailList.clear();
mailList1.forEach((k,v)-> {
MailTest mailTest1 = new MailTest();
List<MailTest> mailList11=new ArrayList<MailTest>();
mailTest1.setRecipient(k);
mailTest1.setListTest(v);
Map<String,List<MailTest>> mailList2=v.stream().collect(Collectors.groupingBy(MailTest::getSubject));
mailList2.forEach((k1,v1)->{
List<MailTest> mailList22=new ArrayList<MailTest>();
MailTest mailTest2 = new MailTest();
mailTest2.setContent(k1);
mailTest2.setListTest(v1);
mailList11.add(mailTest2);
});
mailTest1.setListTest(mailList11);
mailList.add(mailTest1);
});
int a=0;
}
}
2.结果
方式二、直接使用mybatis,获取list展示成菜单树
1.数据如下2. .xml配置
<sql id="table"> t_area_press </sql>
<sql id="select_columns_sql">
ap.id, ap.province, ap.city, ap.area, ap.subject, ap.grade,
ap.press, ap.volum, ap.create_time, ap.update_time
</sql>
<resultMap type="com.kry.xr.entity.AreaPressVo" id="areaListMap">
<!-- <id column="id" property="id"/>-->
<result column="province" property="province"/>
<collection property="areaPressVoList" ofType="com.kry.xr.entity.AreaPressVo">
<result column="city" property="city"/>
<collection property="areaPressVoList" ofType="com.kry.xr.entity.AreaPressVo">
<result column="area" property="area"/>
<result column="subject" property="subject"/>
<result column="grade" property="grade"/>
</collection>
</collection>
</resultMap>
<select id="findAreaList" parameterType="java.util.Map" resultMap="areaListMap">
SELECT
<include refid="select_columns_sql" />
FROM
<include refid="table" /> ap
</select>
3.代码
areaPressMapper.findAreaList(p, map)
4.获取数据
[{"id":null,"province":"湖北省","city":null,"area":null,"subject":null,"grade":null,"press":null,"volum":null,"createTime":null,"updateTime":null,"areaPressVoList":[{"id":null,"province":null,"city":"黄冈市","area":null,"subject":null,"grade":null,"press":null,"volum":null,"createTime":null,"updateTime":null,"areaPressVoList":[{"id":null,"province":null,"city":null,"area":"黄州区","subject":"语文","grade":"一年级","press":null,"volum":null,"createTime":null,"updateTime":null,"areaPressVoList":null},{"id":null,"province":null,"city":null,"area":"黄州区","subject":"语文","grade":"五年级","press":null,"volum":null,"createTime":null,"updateTime":null,"areaPressVoList":null},{"id":null,"province":null,"city":null,"area":"黄梅县","subject":"语文","grade":"五年级","press":null,"volum":null,"createTime":null,"updateTime":null,"areaPressVoList":null},{"id":null,"province":null,"city":null,"area":"黄梅县","subject":"语文","grade":"四年级","press":null,"volum":null,"createTime":null,"updateTime":null,"areaPressVoList":null}]}]}]