查询树形结构的菜单,并且可以排序
/**
* <p>Discription: 获取栏目的菜单树结构</p>
* Created on: 10:24 2019/5/29
* @author muyuanpei
*/
@Override
public List<CmsChannel> getByPid() {
List<CmsChannel> cmsChannels = cmsChannelMapper.selectByPid(0);
List<CmsChannel> cmsChannelList = new ArrayList<>();
for (CmsChannel ch:cmsChannels) {
CmsChannel channel = this.recursiveTree(ch.getChannelId());
cmsChannelList.add(channel);
}
// Comparator<CmsChannel> comparing = comparing((CmsChannel a) -> a.getPriority());
cmsChannelList.sort(comparing(CmsChannel::getPriority).thenComparing(CmsChannel::getChannelId));
return cmsChannelList;
}
public CmsChannel recursiveTree(int cid) {
//根据cid获取节点对象(查询当前节点的对象)
CmsChannel channel = cmsChannelMapper.queryById(cid);
//查询cid下的所有子节点(查询当前节点的子节点)
List<CmsChannel> cmsChannels = cmsChannelMapper.selectByPid(cid);
cmsChannels.sort(comparing(CmsChannel::getPriority).thenComparing(CmsChannel::getChannelId));
//遍历子节点
for(CmsChannel child : cmsChannels){
CmsChannel ch = recursiveTree(child.getChannelId());//递归
channel.getChannelList().add(ch);
}
return channel;
}
使用lambda表达式给list排序
/**
* 正序排序
*/
// 使用Comparator的comparing
Comparator<Apple> comparing = comparing((Apple a) -> a.getWeight());
inventory.sort(comparing((Apple a) -> a.getWeight()));
//或者等价于
inventory.sort(comparing(Apple::getWeight));
/**
* 逆序排序
*/
// 1、 根据重量逆序排序
inventory.sort(comparing(Apple::getWeight).reversed());
// 2、如果两个苹果的重量一样重,怎么办?那就再找一个条件进行排序呗
inventory.sort(comparing(Apple::getWeight).reversed().thenComparing(Apple::getColor));
参考:https://www.cnblogs.com/linjiqin/p/3148066.html
https://blog.csdn.net/u012587693/article/details/52474282
网友评论