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


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

      

    大概思路就是如此。。。

  • 相关阅读:
    zstack(一)运行及开发环境搭建及说明(转载)
    ZStack深度试用:部署、架构与网络及其与OpenStack的对比
    saltops 安装及相关环境安装
    windows下安装rabbitmq的步骤详解
    SQLServer就更新并发处理的解决方案及测试!
    mysql 8.0.20安装教程,mysql详细安装教程
    .NET中的简单的并行
    四、VSCode调试vue项目
    三、使用VSCode配置简单的vue项目
    二、windows下搭建vue开发环境+IIS部署
  • 原文地址:https://www.cnblogs.com/JAYIT/p/5411469.html
Copyright © 2020-2023  润新知