Comparator< T>接口有两个方法
int | compare(T o1,T o2) Compares its two arguments for order. |
boolean | equals(Object obj) Indicates whether some other object is "equal to" this comparator. |
Collections.sort(menuList, comp),第一个参数,是集合,即需要比较的集合,第二个参数,是比较器,实现Comparator< T>接口的比较器
/**
* 菜单顺序比较
*
* @author zhuzw
*
*/
private class ComparatorMenu implements Comparator<TSysAuthority> {
public int compare(TSysAuthority menu0, TSysAuthority menu1) {
// 首先比较theSort,如果theSort相同,则比较ID
int flag = menu0.getTheSort().compareTo(menu1.getTheSort());
if (flag == 0) {
return menu0.getId().compareTo(menu1.getId());
}
return flag;
}
}
List<TSysAuthority> menuList = new ArrayList<TSysAuthority>();
if (menuIds != null && menuIds.size() > 0)
menuList = authDao.createQuery(menuHql).setParameterList("menuIds", menuIds).list();
// 菜单实体按OrderNo和ID排序
ComparatorMenu comp = new ComparatorMenu();
Collections.sort(menuList, comp);
return menuList;