JAVA對象去重 和數組對象排序,java數組
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();@Overridepublic 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>);