java获取2个数组中相同与不相同的元素(授权场景)
来源:互联网 发布:php构架师是什么 编辑:程序博客网 时间:2024/05/22 00:43
java获取2个数组中相同与不相同的元素
/** * * 给对象授予角色权限 * * @param id 对象id * @param date 角色 * * * @date 2016年8月22日 上午11:08:51 */ public static void addObjectToRole(String id, String data) { Map<String, Object> map = new HashMap<String, Object>(); if (StringUtils.isNotBlank(id)) { BasicDBList deteleIds = new BasicDBList(); BasicDBList addIds = new BasicDBList(); if (StringUtils.isNotBlank(data)) { List<String> oldIds = getRoleIds(id);// 旧的 String[] codes = data.split(";");// 新的 /** * 比较新旧id,获取要添加的id和要移除的id */ Map<String, Object> all = compare(codes, oldIds); deteleIds=(BasicDBList) all.get("delete_arry");// 要移除的角色id addIds=(BasicDBList) all.get("add_arry");// 要添加的角色id if (oldIds == null || oldIds.size()==0) {// 之前未授权 addAtuh(id, addIds);// 添加权限 } removeAtuh(id, deteleIds);// 移除权限 addAtuh(id, addIds);// 添加权限 } else {// 未选中 removeAtuh(id, deteleIds); } map.put("code", "ok"); map.put("mgs", "授权成功"); } else { map.put("code", "error"); map.put("mgs", "授权异常"); } renderJSON(map); }
/** * * 获取2个数组中相同与不相同的元素 * * @param t1 新的数组 * @param t2 旧的数组 * @return * * * @date 2016年8月22日 下午3:26:07 */ public static Map<String, Object> compare(String[] t1, List<String> t2) { /** * 要移除的元素 */ BasicDBList deleteArry = new BasicDBList(); List<String> list1 = Arrays.asList(t1); for (String t : t2) {//遍历新的数组元素 if (!list1.contains(t)) {//新的数组中不包含旧的元素(即为要移除的元素) deleteArry.add(Integer.parseInt(t)); } } /** * 要添加的元素 */ BasicDBList addArry = new BasicDBList(); for(int j = 0; j < t1.length; j++){//遍历新的数组元素 if( !t2.contains(t1[j])){//旧的数组中不包含新的数组(即为要添加的元素) addArry.add(Integer.parseInt(t1[j])); } } /** * 获取2个数组中相同的元素 */ Set<String> same = new HashSet<String>(); // 用来存放两个数组中相同的元素 Set<String> temp = new HashSet<String>(); // 用来存放数组a中的元素 for (int i = 0; i < t1.length; i++) { temp.add(t1[i]); // 把数组a中的元素放到Set中,可以去除重复的元素 } for (int j = 0; j < t2.size(); j++) { if (!temp.add(t2.get(j))){// 把数组b中的元素添加到temp中 same.add(t2.get(j));// 如果temp中已存在相同的元素,则temp.add(b[j])返回false } } Map<String, Object> map=new HashMap<String, Object>(); map.put("add_arry", addArry); map.put("delete_arry", deleteArry); map.put("same", same); return map; }
- 将数组的比较,抽成公共方法,比较规范和常用:
- 因为String [] 比较容易转成List(String),
List<String> list1 = Arrays.asList(t1);
- 对此,我们可以规范成以下公共方法:
/** * * 比较2个数组,获取相对于数组1相同的元素、相对于数组2相同的元素,2个数组相同的元素 * * @param t1 旧的数组 * @param t2 新的数组 * * @return 返回3种类型的集合 * * @date 2016年8月26日 下午5:34:49 */ public static Map<String, Object> compareArry(List<String> t1, List<String> t2) { /** * 集合A (新的数据有,旧的数据没有,即为要添加的数据) */ List<Long> listA=new ArrayList<Long>(); for (String str1:t2) {//遍历新的数组元素 if (!t1.contains(str1)) {//旧的数组中不包含新的元素(即为要添加的元素) listA.add(Long.valueOf(str1)); } } /** * 集合B (旧的数据中有,新的数据没有,即为要删除的数据) */ List<Long> listB = new ArrayList<Long>(); for(String str2:t1){//遍历旧的数组元素 if( !t2.contains(str2)){//新的数组中不包含旧的数组(即为要删除的元素) listB.add(Long.valueOf(str2)); } } /** * 集合C (旧的数据中有,新的数据有,即为共同的数据) */ List<Long> listC = new ArrayList<Long>(); for(String str3:t1){//遍历旧的数组元素 if( t2.contains(str3)){//新的数组中包含旧的数组(即为共同的元素) listC.add(Long.valueOf(str3)); } } Map<String, Object> map=new HashMap<String, Object>(); map.put("add_arry", listA); map.put("delete_arry", listB); map.put("common_date", listC); return map; }
0 0
- java获取2个数组中相同与不相同的元素(授权场景)
- java数组:2个数组,查出相同的元素
- 2个整数有序数组中相同元素的个数--java实现
- 2个数组中遍历相同元素或不同元素
- Java判断2个数组里是否包含相同的元素(长度一致)
- 寻找数组中不相同元素的个数
- 去掉数组中与给定元素相同的元素
- java获取数组连续相同元素下标
- 查询2个list相同和不相同元素
- 2个有序数组,找出相同元素
- 删除与原数组中相同的元素
- 拼接2个数组,删除掉其中相同的元素
- 拼接2个数组,删除掉其中相同的元素
- java 取出两个数组中相同的元素
- java去除两个数组中相同的元素
- 查找数组中相同的元素
- 两个数组中找出相同的元素
- 查询数组中相同元素的个数
- bat知识点5_EnableDelayedExpansion
- errorPage、jsp:include、jsp:forward、get\post乱码解决
- Android中dip、dp、sp、pt和px的区别
- 读书笔记-柒-《腾讯网UED体验设计之旅》
- bat知识点6_if
- java获取2个数组中相同与不相同的元素(授权场景)
- Android-隐式意图的匹配规则
- Java多线程系列--“JUC集合”04之 ConcurrentHashMap
- RedHat生态系统--来自RedHat官方网站
- 20160803------排序、二维数组
- tushare数据格式转为PyalgoTrade所需格式
- AIDL(Android Interface Definition Language)
- 【Baltic2009】bzoj 1355 Radio Transmission
- javaIO