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();
    	}
    

      

    大概思路就是如此。。。

  • 相关阅读:
    JN_0041:在新版的edge浏览器中 将 url 地址 设置为应用,并在桌面上显示快捷方式
    H50074:base标签 指定资源地址
    MayaLearn0004: 层 大纲视图 特殊复制
    MayaLearn0003: 工具架 快捷菜单 枢轴 对齐
    MayaLearn0000: 快捷键命令
    MayaLearn0002: 软件基本操作工具 基本物体的创建 工作区菜单
    MayaLearn0001: 初识maya
    Ajax0006: ajax 读取 本地 js 配置文件
    JN_0040:如何下载视频流视频文件
    H50073:div 循环添加点击事件,swiper循环添加点击事件
  • 原文地址:https://www.cnblogs.com/JAYIT/p/5411469.html
Copyright © 2011-2022 走看看