一对多的重复比如说一个老师有好几个学生,这时候查询出来是一个老师一个学生列出来,明显是有重复的,怎么办呢?需要用map方法过滤
private List<Admin> classfiy(List<Admin> admins) {
if (admins != null && admins.size() > 0) {
Map<String, Admin> map = new HashMap<String, Admin>();
for (Admin admin : admins) {
if (map.containsKey(admin.getAccount())) {
map.get(admin.getAccount()).getRoles().addAll(
admin.getRoles());
map.get(admin.getAccount()).getProducts().addAll((admin.getProducts()));
} else {
map.put(admin.getAccount(), admin);
}
}
List<Admin> list = new ArrayList<Admin>();
for (Iterator<String> i = map.keySet().iterator(); i.hasNext();) {
String key = i.next();
list.add(map.get(key));
}
Collections.sort(list, new Comparator() {
@Override
public int compare(Object o1, Object o2) {
Admin ad1 = (Admin) o1;
Admin ad2 = (Admin) o2;
return ad2.getUpdateTime().compareTo(ad1.getUpdateTime());
}
});
return list;
}
return null;
}
过滤之后也许查询出的学生数据有重复,可以先清除重复学生数据
if (products != null && products.size() > 0) {
for(int i = products.size() - 1; i > 0; i--) {
String item = products.get(i).getName();
for(int j = i - 1; j >= 0; j--) {
if(products.get(j).getName().equals(item)) {
products.remove(i);
break;
}
}
}
}
然后用分隔符分开
if (roles != null && roles.size() > 0) {
for (int i = 0; i < roles.size(); i++) {
JSONObject jr = new JSONObject();
jr.put("id", roles.get(i).getId());
jr.put("name", roles.get(i).getName());
jr.put("desc", roles.get(i).getDesc());
sb.append(roles.get(i).getName());
if (i < roles.size() - 1)
sb.append(",");
rs.add(jr);
}
}
最后返回json数据
private String createJsonStr(List<Admin> rows) {
JSONObject json = new JSONObject();
if (null != rows) {
JSONArray jows = new JSONArray();
for (Admin row : rows) {
JSONObject r = buildJson(row);
jows.add(r);
}
json.put("rows", jows);
} else {
json.put("rows", new JSONArray());
}
return json.toString();
}
大概思路就是如此。。。