当前位置:首页 > 开发 > 编程语言 > 编程 > 正文

Map基础知识引起的很纠结的问题

发表于: 2011-02-25   作者:cuisuqiang   来源:转载   浏览次数:
摘要: 首先面临这样一段代码,根据注释代码的意思是根据childr筛选数据 @SuppressWarnings("unchecked") public static List getList(String orgId, String userId,List child) { if (null == child || child.isEmpty()) re

首先面临这样一段代码,根据注释代码的意思是根据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而定义的辅助类,只有KeyValue两个属性

首先开始让我郁闷的是order.add(temp.remove(list[i]));根本不明白这是个什么意思,因为我竟然忘了Mapremove后返回什么。直接往下看又看到循环Map存储值,我一下子断定,这个方法对数据根本没有筛选,数据没有多也没有少。而注释上注释着该方法是根据List child进行筛选。

也许大家都在嘲笑,这可不是没有多和少数据吗,更也许大家眨第二眼的时候已经看出来这是个排序了。

将集合数据放到Map中,根据方法内得到的数组数据,如果符合则会执行order.add(temp.remove(list[i]));也就是在Map中删除匹配的数据,然后Mapremove方法返回对应Key的值,这样数据在Map中删除时也存到集合的最前面了。最后遍历Map,将剩下的数据存放到集合中,这样就将传进来的集合,根据方法内获得数组的数据,进行了排序,一些数据优先的放到了集合的前面。

这貌似简单的让人蛋疼,可是对于数月不动代码的我来说,他让我趴下了,无语和狂忍中。

 

请您到ITEYE看我的原创:http://cuisuqiang.iteye.com

或支持我的个人博客,地址:http://www.javacui.com

 

Map基础知识引起的很纠结的问题

  • 0

    开心

    开心

  • 0

    板砖

    板砖

  • 0

    感动

    感动

  • 0

    有用

    有用

  • 0

    疑问

    疑问

  • 0

    难过

    难过

  • 0

    无聊

    无聊

  • 0

    震惊

    震惊

编辑推荐
项目打包的时候,js文件后缀类似这样的,a.js?v==TIMESTAMP 没有replace成功: 其中pom.xml配置如下
昨天老板让我帮忙解决个问题。一个没人在维护的某酒店订票应用的预定日期等很多有日期的地方都显示
在最近的公司框架开发中,利用了网上某大牛的反射缓存库作为辅助。在测试的时候发现出现了巨大的内
昨天一个同事突然问我,说他在 SQL 2000 数据库创建如下表的时候,突然碰到了下面一条警告信息。 SQ
昨天一个同事突然问我,说他在SQL 2000数据库创建如下表的时候,突然碰到了下面一条警告信息。SQL脚
封杀还是放任,这是个纠结的问题(一) 昨天说到,新浪微博很多大V跑到微信开公众号,在微博上做宣传
软件架构设计对数据库性能的影响 软件系统的架构对数据库的影响是非常直接的。例如一套系统,如果并
这个问题在我的心中已经存在很长时间了。 起初认识到这个问题是从MSDN Webcast的一个视频中了解到的
import javax.swing.JFrame; public class Main { public static void main(String[] args) throws
问题是由于Android Dependencies小差号引起的,下午一搞Android的哥们在群里说最近导入的几个工程每
版权所有 IT知识库 CopyRight © 2009-2015 IT知识库 IT610.com , All Rights Reserved. 京ICP备09083238号