zoukankan      html  css  js  c++  java
  • 查询出的列表过滤掉重复数据的方法(主要是一对多的重复)

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

      

    大概思路就是如此。。。

  • 相关阅读:
    java线程的理解
    linux常用命令
    排序算法-(2)-选择排序
    git查看某个文件修改历史
    Information:java: javacTask: 源发行版 1.8 需要目标发行版 1.8
    排序算法-(1)-插入排序
    去重脚本
    771.宝石与石头
    json 的应用
    xml 文件处理
  • 原文地址:https://www.cnblogs.com/JAYIT/p/5411469.html
Copyright © 2011-2022 走看看