您的位置:首页 > 编程语言 > Java开发

JAVA对象去重 和数组对象排序

2015-06-18 10:37 501 查看
JAVA对象去重比较恶心的说

需求:我要做的是去重每个权限的菜单,菜单表结构是 ID RoleID MenuID 获取的菜单表 应该是MenuID不能重复的

所以写菜单表的实体类,重写equals hashCode方法,让着2个作比较,下面代码中MenuID为主要比较的字段

package com.attendance.mvc.model;

import com.jfinal.plugin.activerecord.Model;

public class RoleMenu extends Model<RoleMenu> {
// 类版本,系统自动生成
private static final long serialVersionUID = 1L;//这是框架自带的东西 自动映射表字段,也就相当于get set自带了
public final static RoleMenu me = new RoleMenu();

@Override
public boolean equals(Object obj) {
RoleMenu roleMenu = (RoleMenu) obj;
return this.getStr("MenuID").equals(roleMenu.getStr("MenuID"));
}
@Override
public int hashCode() {
return this.getStr("MenuID").hashCode();
}
}


这样给实体类重写2个方法之后 用set 自动去重

//获取权限菜单
public  List<RoleMenu> GetRoleMenuList()
{
List<UserRole> userRoleList = this.GetUserRoleList();
IRoleMenu roleMenuBusiness = BusinessFactory.CreateRoleMenuBusiness();
List<RoleMenu> roleMenuList=new ArrayList<RoleMenu>();
Set<RoleMenu> set=new HashSet<RoleMenu>();
for(UserRole userRole:userRoleList)
{
List<RoleMenu> rmList =	 roleMenuBusiness.GetListByRoleID(userRole.getStr("RoleID"));
set.addAll(rmList);
}
roleMenuList.addAll(set);
return roleMenuList;
}


数组对象排序 实现Comparable接口 重写compareTo方法 给出需要排序的字段

public class RoleMenu extends Model<RoleMenu>  implements Comparable<RoleMenu>  {
// 类版本,系统自动生成
private static final long serialVersionUID = 1L;
public final static RoleMenu me = new RoleMenu();

@Override
public int compareTo(RoleMenu o) {
return this.getDouble("Order").compareTo(o.getDouble("Order"));
}
}


使用

Collections.sort(List<RoleMenu>);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: