前些天發現了一個巨牛的人工智能學習網站,通俗易懂,風趣幽默,忍不住分享一下給大家。點擊跳轉到教程。?
[ {"data" : {"code" : "044","post" : "xxx領導", "email" : "swfdffg@qq.com","Gender" : "boy"},"id" : "D279B324324343242342342428","userId" : "AF1111111111111111C93", "status" : "GOOD"
}, {"data" : {"code" : "043","post" : "員工", "email" : "jiangn@qq.com","Gender" : "girl"},"id" : "11914546565656757676D4D71D","userId" : "AF1111111111111111C93", "status" : "BAD" ... ...
}]
?
如上有一個類似這樣 json :JsonContext,主要是描述多個 user 的相關信息。
業務:把 A 系統中的用戶信息同步到 B 系統中,當多條 user 信息的 userId 相同時視為同一個 user,同步時只取其中職位最高的那一條數據。
思路:在同步前就過濾掉同一個 user 職位低的數據信息。
方法:
JSONArray jsonArray = JSON.parseArray(JsonContext);// 剔除JsonContext中重復的用戶信息,只保留一個職位最高的userMap userMap = new HashMap();for (int i=0;i<jsonArray.size();i++) {Object user = jsonArray.getJSONObject(i);Map jsonMap = JSON.parseObject(String.valueOf(user));Object userId = jsonMap.get("userId");if (null != userMap.get(userId)) { // user已存在Map oldUser = JSON.parseObject(String.valueOf(userMap.get(userId))); // 已存在用戶Map oldDataMap = JSON.parseObject(String.valueOf(oldUser.get("data")));int oldLevel = getJobLevel(oldDataMap.get("post").toString());// 已存在用戶職位等級int level = getJobLevel(JSON.parseObject(String.valueOf(jsonMap.get("data"))).get("post").toString());// 當前用戶職位等級if(oldLevel <= level){ // 刪除數值大者(職位等級低),保留等級高的職位logger.info("\n-----------------------------------保留的是:"+userMap.get(userId));logger.info("\n-----------------------------------刪除的是:"+user);jsonArray.remove(user);i--;}else {logger.info("\n-----------------------------------刪除的是:"+userMap.get(userId));logger.info("\n-----------------------------------保留的是:"+user);jsonArray.remove(jsonArray.getJSONObject(Integer.parseInt(userMap.get(userId+"i").toString())));i--;}} else {userMap.put(userId, user);userMap.put(userId+"i", i);}}這
這樣循環后數據就沒有重復的了,可以直接解析并作后續操作了。
?