`
cuisuqiang
  • 浏览: 3960608 次
  • 性别: Icon_minigender_1
  • 来自: 北京
博客专栏
3feb66c0-2fb6-35ff-968a-5f5ec10ada43
Java研发技术指南
浏览量:3670361
社区版块
存档分类
最新评论

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

    博客分类:
  • JDK
阅读更多

首先面临这样一段代码,根据注释代码的意思是根据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

 

分享到:
评论

相关推荐

    C语言头文件 MAP C语言头文件 MAP

    C语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言头文件 MAPC语言...

    java循环Map java迭代Map

    Map a = new HashMap(); //方法一 Iterator it = a.entrySet().iterator(); while (it.hasNext()) { Map.Entry pairs = (Map.Entry) it.next(); System.out.println(pairs.getValue()); } //以下方法需要jdk5以上...

    map.toString()后转换成Map类型

    ### Map.toString()后转换成Map类型的实现方法及解析 在Java编程中,有时我们需要将一个`Map`对象转换为字符串形式进行存储或传输,而在接收端又需要将该字符串重新转换回`Map`对象以便进一步处理。本篇将详细介绍...

    uni-app的map层级问题封装.zip

    "uni-app的map层级问题封装.zip"这个压缩包文件很可能是为了解决这一问题而提供的一个解决方案。 首先,uni-app是一个基于Vue.js的多端开发框架,它允许开发者编写一次代码,然后发布到iOS、Android、Web(H5、微信...

    Java基础知识-day04 【Map】.pdf

    Java基础知识-day04 【Map】.pdf 本文档主要讲解Java中的Map集合,包括Map集合的概述、Map常用子类、Map接口中的常用方法、Map集合遍历键找值方式等。 Map集合概述 Map集合是一种特殊的集合,用于存储键值对对象...

    map_电机_效率map_

    - 运行监控:在实际运行中,通过比较实际效率Map与设计时的理论Map,可以发现潜在的问题或故障。 - 能源管理:在节能和能效提升项目中,效率Map提供了评估和调整电机运行策略的依据。 在实际使用"map.m"这个工具时...

    Map (c++实现的简易map)

    尽管`std::map`已经提供了一套完整的功能,但自己动手实现可以帮助开发者深入理解底层的红黑树(Red-Black Tree)或其他平衡二叉查找树算法,这些算法是`std::map`的基础。 自定义`Map`的基本结构通常包括以下组件...

    rammap自动运行程序

    **RAMMap工具详解** RAMMap是一款强大的内存分析工具,由微软的 Sysinternals 团队开发,...了解如何正确配置和利用RAMMap的自动化功能,对于系统管理员和性能优化人员来说,是提升工作效率和解决内存相关问题的关键。

    jackson json 转 map 数值科学计数法的问题解决.docx

    Jackson JSON 转 Map 之科学计数法问题解决方案 Jackson 是一个流行的 Java 库,用于将 JSON 数据转换为 Java 对象或 Map。在使用 Jackson 将 JSON 转换为 Map 的过程中,可能会遇到科学计数法的问题。该问题的出现...

    map工具,分析linux生產的map文件

    2. **性能优化**:分析map文件可以揭示代码的大小,找出可能的优化点,比如减少不必要的代码体积,提高加载速度。 3. **内存分析**:查看哪些部分占用了大量内存,有助于识别内存消耗过高的问题。 4. **安全检查**:...

    map.zip_电机_电机MAP_电机效率_电机效率map_绘制电机MAP

    通过这些数据,我们可以计算出电机在每个工况点的效率,即: 效率 = (输出功率 / 输入功率) × 100% 其中,输出功率是电机在特定转速和转矩下的机械功率,可以通过转矩与转速的乘积得到;输入功率则由电流和电压的...

    IAR MAP文件分析

    "IAR MAP文件分析" IAR MAP文件分析是编译器编译产生的MAP文件分析,文件后缀为.map,可以查看程序代码及数据在内存中的情况。MAP文件是IAR编译器编译生成的文件,记录了程序在内存中的分布情况。 在IAR工程中,...

    map文件分析工具map文件分析工具

    通过分析Map文件,开发者可以定位到代码中的特定位置,以便于调试和解决问题。 2. **性能优化**:Map文件揭示了程序中各个部分的大小和位置,这有助于识别可能的内存浪费或过度使用。例如,如果一个函数占用的空间...

    java一键xml转map,一键map转xml工具类

    `EasyXmlUtil`中很可能包含了一个名为`xmlToMap`的方法,用于执行这个过程。 接下来,Map到XML的转换则需要构建XML文档结构。我们可以利用`javax.xml.transform.TransformerFactory`和`javax.xml.transform.dom....

    c++中map的基本用法和嵌套用法实例分析

    C++中的`map`是一个关联容器,它存储键值对,其中每个键都是唯一的。`map`的数据结构通常实现为红黑树,提供了O(log n)的时间复杂度进行插入、查找和删除操作。下面我们将详细探讨`map`的基本用法和嵌套用法。 ### ...

    C++11 unordered_map与map(插入,遍历,Find)效率对比。

    - `std::unordered_map`:遍历哈希表通常需要遍历所有桶,因此其时间复杂度也是O(n),但实际运行速度可能比`std::map`快,尤其是当元素数量很大时。 **查找操作**: - `std::map`:查找操作同样为O(log n),因为...

    GEOMAP3.5安装包

    《GEOMAP3.5安装指南及应用解析》 GEOMAP3.5是一款功能强大的地理信息系统(GIS)软件,其简洁的安装流程和无需许可证的特性,使其在用户群体中备受青睐。本文将详细阐述如何进行GEOMAP3.5的安装,并探讨其主要功能...

    java Pojo转Map

    将Pojo对象转换为Map,可以简化数据处理过程,尤其是在JSP页面上展示数据时,Map的灵活性更加突出。本文将详细介绍如何实现Java中的Pojo到Map的转换,并通过具体的示例来演示这一过程。 首先,我们需要一个Pojo类,...

    Map拆分List拆分

    在大数据处理领域,高效的数据操作是关键,而Map和List作为两种常见的数据结构,它们的拆分技巧在处理大规模数据时显得尤为重要。Map拆分与List拆分涉及到数据的分布式处理,这通常在Hadoop、Spark等大数据处理框架...

Global site tag (gtag.js) - Google Analytics