首页 新闻 会员 周边 捐助

Collections.sort 排序没实现 ,不报错 ,帮忙看看啊

0
悬赏园豆:10 [已解决问题] 解决于 2017-03-24 17:43

private List<Auth> getAuthsFromTauths(List<Tauth> tauths) {
List<Auth> auths = new ArrayList<Auth>();
if (tauths != null && tauths.size() > 0) {
for (Tauth t : tauths) {
List<Auth> tempList = new ArrayList<Auth>(0);
Auth a = new Auth();
BeanUtils.copyProperties(t, a);
if (t.getTauth() != null) {
a.setCpid(t.getTauth().getCid());
a.setCpname(t.getTauth().getCname());
}
if (countChildren(t.getCid()) > 0) {
a.setState("closed");
}

//处理子菜单
Set<Tauth> set = t.getTauths();
for( Tauth tauth:set){
if(StringUtils.isNotBlank(tauth.getIsMenu())){
if(tauth.getIsMenu().equals("1")){
Auth auth = new Auth();
auth.setCid(tauth.getCid());
auth.setCname(tauth.getCname());
System.out.println("看看:-->>"+tauth.getCname());
auth.setCurl(tauth.getCurl());
tempList.add(auth);
}
}
}
ListSortUtil<Auth> sortList = new ListSortUtil<Auth>();
sortList.sort(tempList, "getCseq", "asc");
for (Auth auth : tempList) {
System.out.println("调整后的顺序看看:"+auth.getCname());
}
a.setChildNode(tempList);
auths.add(a);
}
}
return auths;
}

 

public void sort(List<E> list, final String methodName, final String sortord) {
Collections.sort(list, new Comparator() {
public int compare(Object a, Object b) {
int ret = 0;
try {
Method m1 = ((E) a).getClass().getMethod(methodName, null);
Method m2 = ((E) b).getClass().getMethod(methodName, null);
Object o1 = m1.invoke(((E) a), null);
Object o2 = m2.invoke(((E) b), null);
if (sortord != null && "desc".equals(sortord)) {
ret = StringUtil.nullToString(o2).compareTo(
StringUtil.nullToString(o1));
if(ret>0){
ret = 1;
}else if(ret ==0){
ret =0;
}else{
ret =-1;
}
} else {
ret = StringUtil.nullToString(o1).compareTo(
StringUtil.nullToString(o2));
if(ret>0){
ret = 1;
}else if(ret ==0){
ret =0;
}else{
ret =-1;
}
}
} catch (NoSuchMethodException ne) {
System.out.println(ne);
} catch (IllegalAccessException ie) {
System.out.println(ie);
} catch (InvocationTargetException it) {
System.out.println(it);
}
return ret;
}
});
}

 

打印结果:

看看:-->>号码解黑命令制作
看看:-->>号码拦截自动执行
看看:-->>号码解黑命令执行
看看:-->>号码加黑命令制作
看看:-->>号码加黑命令执行
调整后的顺序看看:号码解黑命令制作
调整后的顺序看看:号码拦截自动执行
调整后的顺序看看:号码解黑命令执行
调整后的顺序看看:号码加黑命令制作
调整后的顺序看看:号码加黑命令执行

 

name_zhang的主页 name_zhang | 初学一级 | 园豆:183
提问于:2017-03-23 11:07
< >
分享
最佳答案
1

getCseq是什么?

你前面对象没对这个字段做set啊。

收获园豆:10
Daniel Cai | 专家六级 |园豆:10424 | 2017-03-23 19:15

昨天找到问题了, 是这个原因。改别人的代码,一直在看那个sort方法,原因其实是没给赋值!多谢

name_zhang | 园豆:183 (初学一级) | 2017-03-24 16:47
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册