import java.util.Comparator;
public class ComparatorMenu implements Comparator {
public int compare(Object arg0, Object arg1) {
DataMenu menu0 = (DataMenu) arg0;
DataMenu menu1 = (DataMenu) arg1;
//比较顺序
int flag = menu0.getParentCode().compareTo(menu1.getParentCode());
if (flag == 0) {
return (menu0.getSort() - menu1.getSort());
} else {
return flag;
}
}
}
可以指定对一个ArrayList<Object>进行排序。需要自己书写排序规则继承Comparator
import java.util.Comparator; public class ComparatorMenu implements Comparator { public int compare(Object arg0, Object arg1) { DataMenu menu0 = (DataMenu) arg0; DataMenu menu1 = (DataMenu) arg1; //比较顺序 int flag = menu0.getParentCode().compareTo(menu1.getParentCode()); if (flag == 0) { return (menu0.getSort() - menu1.getSort()); } else { return flag; } } }
ComparatorMenu comparator = new ComparatorMenu(); Collections.sort(menus, comparator);对指定的list进行排序2.比较包含一个List<Object>判断是否包含某个对象,需要覆写这个对象的equal方法来判断对象是否相等,然后直接调用public class DataDept implements Serializable { /** */ private static final long serialVersionUID = 1L; private String code; private String name; private String codePath; private String parentCode; public String getParentCode() { return parentCode; } public void setParentCode(String parentCode) { this.parentCode = parentCode; } public String getCode() { return code; } public void setCode(String code) { this.code = code; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getCodePath() { return codePath; } public void setCodePath(String codePath) { this.codePath = codePath; } // equals方法的参数保持为Object类型,否则在动态绑定调用机制会调用超类的equals方法 public boolean equals(Object o) { // 先检查是否是自比较 if (this == o) { return true; } if (o == null || o.getClass() != this.getClass()) { return false; } // 转换参数的类型 DataDept that = (DataDept) o; // 完成所需域的比较 return (null != this.codePath && null != that.getCodePath() && this.codePath.equals(that.getCodePath()) && null != this.getName() && null != that.getName() && this.getName().equals(that.getName())); } public int hashCode() { return codePath.hashCode(); } }
DataDept parentDept = new DataDept(); parentDept.setCode(dept.getParentCode()); parentDept.setCodePath(parentCodePath); parentDept.setDeptType(dept.getDeptType()); parentDept.setName(parentName); parentDept.setNamePath(parentNamePath); parentDept.setShopId(dept.getShopId()); if (!shopList.contains(parentDept)) { shopList.add(parentDept); }
进行判断。