`
shenkun_918
  • 浏览: 27459 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Map用法两例

阅读更多

用法一:计数,统计单词数。在thinking in java 中类型信息里的计数器也是用到map来计数的。简单例子:

 

String s = "word word java word java work work";
        String[] words = s.split(" ");
        Map map = new HashMap();
        int count = 0;
        for(int i=0;i<words.length;i++){
            if(map.containsKey(words[i])){
                count = (Integer)map.get(words[i]) + 1;
                map.put(words[i], count);
            }else{
                map.put(words[i], 1);
            }
        }
        System.out.println(map);


 

用法二:很早以前写得一个项目中的查询。多个条件按照不同的排列组合作为查询条件,可以任意为空。这样的需求是在项目中不可能不遇到,遇到好多次,均是用以下方法处理。项目中的查询部分代码,这里是根据4个查询条件来查询的,将查询条件在action中封装在map中,在dao中处理如下:

 

/**
     * 根据查询条件组成sql
     * @param map 查询条件
     * @return
     */
    private String queryHql(Map map) {
        StringBuilder s = new StringBuilder();
        s.append("from ApplicationPO ap");
        Iterator  iter = map.keySet().iterator();
        boolean t = false;
        while(iter.hasNext()){
            Object key = iter.next();
            if(key.toString().equals("orderNum")&&map.get(key).toString().trim().length()!=0){
                if(t){
                    s.append(" and ap.orderNum like '%");
                    s.append(map.get(key));
                    s.append("%'");
                }else{
                    s.append(" where ap.orderNum like '%");
                    s.append(map.get(key));
                    s.append("%'");
                }
                t = true;
            }
            if(key.toString().equals("priceId")&&map.get(key).toString().trim().length()!=0){
                if(t){
                    s.append(" and ap.priceId like '%");
                    s.append(Long.parseLong(map.get(key).toString()));
                    s.append("%'");
                }else{
                    s.append(" where ap.priceId like '%");
                    s.append(Long.parseLong(map.get(key).toString()));
                    s.append("%'");
                }
                t = true;
            }
           
            if(key.toString().equals("state")&&map.get(key).toString().trim().length()!=0){
                if(t){
                    s.append(" and ap.applicationState like '%");
                    s.append(map.get(key));
                    s.append("%'");
                }else{
                    s.append(" where ap.applicationState like '%");
                    s.append(map.get(key));
                    s.append("%'");
                }
                t = true;
            }
           
            if(key.toString().equals("customerId")&&map.get(key).toString().trim().length()!=0){
                if(t){
                    s.append(" and ap.customerId like '%");
                    s.append(Long.parseLong(map.get(key).toString()));
                    s.append("%'");
                }else{
                    s.append(" where ap.customerId like '%");
                    s.append(Long.parseLong(map.get(key).toString()));
                    s.append("%'");
                }
                t = true;
            }
        }
        s.append(" order by ap.applicationTime desc");
        return s.toString();
    }
 

 

需要注意的是map中put的value不能为null,可以在action中处理,将null转化为""。用此方法的话,查询增加一个条件的话,那么无非是多put进一个条件,在dao中处理的话,只需要多增加一个if即可,方便而且不会出错。看到过有人写的查询,全部用排列组合处理,一个dao写了6k多语句,那么多情况是否有漏掉,就不得而知了。

    前段时间看到,就是在

s.append("from ApplicationPO ap");

后面加上 where 1=1,那么这个查询就可以省很多代码了。

看了http://www.iteye.com/topic/233664后,发现以前写得真事烂。为了项目,赶时间,写得还真差。

 

 

分享到:
评论

相关推荐

    map函数,Python

    在此例中,`add`函数接收两个参数并返回它们的和。`map()`函数将`a`和`b`中的对应元素传递给`add`函数,并返回一个新的迭代器,最后将其转换为列表输出。 #### 五、Map函数的应用场景 1. **数据转换**:对于数据...

    Java中对list map根据map某个key值进行排序的方法

    在本例中,我们使用了 Map 中的“cj”键对应的值来比较两个 Map 对象。 使用 Java 中的 Collections.sort() 方法和 Comparator 接口可以轻松地对 List 集合进行排序,包括根据 Map 中的某个 key 值对 List 集合进行...

    Python map遍历.docx

    此例中,我们使用了一个带有两个参数的lambda表达式`lambda x, y: x + y`,该表达式将两个列表中对应位置的元素相加。`map`函数将两个列表作为输入,并按照顺序传递给lambda表达式,最终得到新的列表`[5, 7, 9]`。 ...

    Java软件开发实战 Java基础与案例开发详解 11-5 Map接口 共12页.pdf

    Map接口中的元素由两部分组成:键(key)和值(value)。键用于唯一标识一个值,而值则表示与该键关联的数据。Map接口提供了添加、删除和查询元素的方法。 - **添加操作**:`void put(K key, V value)` 用于将指定...

    使用GSON库将Java中的map键值对应结构对象转换为JSON

    在本例中,我们有一个名为`Point`的简单JavaBean实体类,包含两个整型属性`x`和`y`,以及对应的getter和setter方法。这个实体类用于演示如何处理Map中复杂的键类型,即自定义的JavaBean对象作为Key。 测试类`...

    JAVA编程百例

    【JAVA编程百例】这个资源集包含了丰富的Java编程实例,旨在帮助学习者深入理解和掌握Java编程语言。在Java的世界里,实践是检验理论知识是否扎实的最好方式。通过实际编写和运行代码,开发者可以更好地理解Java语法...

    struts2 标签 doubleselect动态 用法

    `doubleselect`标签是Struts2提供的一个特殊标签,用于创建具有两个级联选择框的用户界面,通常用于父类别与子类别之间的关联选择,如在上述例子中的部门与人员选择。 在`doubleselect`标签中,`list`属性用于指定...

    python编程100例

    5. **函数式编程**:了解map、filter、reduce等高阶函数的用法,以及lamda表达式和闭包的概念。 6. **面向对象编程**:掌握类的定义、对象的创建、继承、封装和多态等核心概念。 7. **模块与包**:学习如何导入和...

    STL之迭代器 迭代器的用法,分类,案例分析

    例如,`find()`算法接受两个输入迭代器,一个指向容器的开始,另一个指向容器的结束,以及一个要查找的值。如果找到匹配的元素,返回对应的迭代器;否则,返回结束迭代器。 ```cpp template,typename T &gt; ...

    java编程百例

    - **HashMap和TreeMap**:两种常用的Map实现,HashMap提供快速查找,TreeMap保持键的排序。 "Java编程百例"这个资源很可能包含了以上所有概念的实例,让初学者能够通过实践更好地理解和掌握Java编程。每项技术都有...

    jQuery中$.each()函数的用法引申实例_.docx

    本文将详细介绍`$.each()`函数的基本用法、高级技巧以及实际应用场景。 #### 二、基础语法 `$.each()`函数的基本语法如下: ```javascript $.each(collection, callback); ``` - `collection`:需要遍历的集合,...

    C++一百例

    兔子问题,也被称为斐波那契序列,是一个常见的编程练习,它涉及计算一系列数字,其中每个数字是前两个数字之和。在C++中实现兔子问题可以演示递归、循环等编程技巧,同时也能帮助学习者理解动态规划的概念。 标签...

    struts+freemarker 源码例

    通过分析这些模板,我们可以更好地理解FreeMarker的用法。 在Struts与FreeMarker的整合中,通常需要在Struts的配置文件(struts-config.xml或struts2的struts.xml)中定义Action和对应的Result,指定使用FreeMarker...

    解析PHP可变函数的经典用法

    这样的功能非常灵活,可以用于各种场景,包括动态调用类方法、处理回调...在本例中,`map`函数利用了这一特性,实现了对数组元素的遍历和累积操作。理解并掌握可变函数的用法,能够极大地提高代码的灵活性和可扩展性。

    Java学习25例

    Java学习25例是一个集合了二十五个典型Java编程示例的资源包,旨在帮助初学者和进阶者更好地理解和掌握Java编程语言的核心概念与技术。这些实例覆盖了从基础语法到高级特性的广泛主题,是提升Java编程技能的理想资料...

    MapReduce数据统计简单实例

    在Hadoop生态系统中,MapReduce被广泛应用于大数据的处理,它将复杂的并行计算任务分解为两个主要阶段:Map(映射)和Reduce(规约)。在这个“MapReduce数据统计简单实例”中,我们将探讨如何使用Hadoop的Eclipse...

    JSON example in Java

    JSON(JavaScript Object Notation)是一种轻量级的...了解并熟练掌握这些库的基本用法,对于进行JSON相关的开发工作至关重要。在实际项目中,根据性能需求、兼容性和个人偏好,开发者可以选择合适的库进行JSON处理。

    一个程序员的自省 iBATIS In Action:什么是iBATIS(二)

    这个应用能够执行SQL Map中的SQL语句,并将结果输出到控制台。首先,你需要安装一个数据库,例如MySQL,然后创建相应的数据表和填充一些示例数据。 【配置数据库】 在这个例子中,MySQL被用来创建一个名为`USER_...

Global site tag (gtag.js) - Google Analytics