Map基础知识引起的很纠结的问题
来源:互联网 发布:windows正版软件多少钱 编辑:程序博客网 时间:2024/06/13 08:15
首先面临这样一段代码,根据注释代码的意思是根据childr筛选数据
@SuppressWarnings("unchecked")public static List getList(String orgId, String userId,List child) { if (null == child || child.isEmpty()) return null; String[] list = getList(orgId, userId); List order = new ArrayList(); Map temp = new HashMap(); for (int j = 0; j < child.size(); j++) { EA_SimpleObject so = (EA_SimpleObject) child.get(j); temp.put(so.getKey(), so); } if (null != list && list.length > 0) { for (int i = 0; i < list.length; i++) { if (null != temp.get(list[i])) { order.add(temp.remove(list[i])); } } } Iterator itOrg = temp.keySet().iterator(); while (itOrg.hasNext()) order.add(temp.get(itOrg.next())); return order;}
简单解释一下EA_SimpleObject,这个是系统内为方便使用Map而定义的辅助类,只有Key,Value两个属性
首先开始让我郁闷的是order.add(temp.remove(list[i]));根本不明白这是个什么意思,因为我竟然忘了Map的remove后返回什么。直接往下看又看到循环Map存储值,我一下子断定,这个方法对数据根本没有筛选,数据没有多也没有少。而注释上注释着该方法是根据List child进行筛选。
也许大家都在嘲笑,这可不是没有多和少数据吗,更也许大家眨第二眼的时候已经看出来这是个排序了。
将集合数据放到Map中,根据方法内得到的数组数据,如果符合则会执行order.add(temp.remove(list[i]));也就是在Map中删除匹配的数据,然后Map的remove方法返回对应Key的值,这样数据在Map中删除时也存到集合的最前面了。最后遍历Map,将剩下的数据存放到集合中,这样就将传进来的集合,根据方法内获得数组的数据,进行了排序,一些数据优先的放到了集合的前面。
这貌似简单的让人蛋疼,可是对于数月不动代码的我来说,他让我趴下了,无语和狂忍中。
请您到ITEYE看我的原创:http://cuisuqiang.iteye.com
或支持我的个人博客,地址:http://www.javacui.com
0 0
- Map基础知识引起的很纠结的问题
- 很纠结的一个问题
- 一个很纠结的问题
- 一个纠结的问题
- 纠结的一个问题
- 纠结的小问题
- 纠结的小问题
- 纠结的问题整理
- 让我很纠结的一个问题
- php一个很纠结的问题---括号
- VC下关于map容器类引起的问题?
- Map集合遍历过程调用remove方法引起的问题
- 纠结得很的一个问题
- 昨天纠结一天的问题
- 一些比较纠结的问题
- hash_map一些纠结的问题
- 记录一个纠结的问题
- sdnu1024.纠结的页码问题
- CSS cursor 属性
- javascript——运动侧边分享
- DES加密使用
- Linux 和 Android 系统性能分析
- JSP设置头信息导出Excel
- Map基础知识引起的很纠结的问题
- 二次开发中增加新需求的开发感想
- Spring定时器的使用
- JSP自定义标签实现数据字典
- pushlet 之 Pushlet使用手把手实例
- php服务器变量 $_SERVER(常用)
- 合理规划设计货架防止变形或倒塌
- java中构造器执行前的初始化动作
- 关于BCD编码 BCD与十进制转换