查询出的列表过滤掉重复数据的方法(主要是一对多的重复)

  一对多的重复比如说一个老师有好几个学生,这时候查询出来是一个老师一个学生列出来,明显是有重复的,怎么办呢?需要用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();
	}

  

大概思路就是如此。。。

原文地址:https://www.cnblogs.com/JAYIT/p/5411469.html