用法一:计数,统计单词数。在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后,发现以前写得真事烂。为了项目,赶时间,写得还真差。
分享到:
相关推荐
在此例中,`add`函数接收两个参数并返回它们的和。`map()`函数将`a`和`b`中的对应元素传递给`add`函数,并返回一个新的迭代器,最后将其转换为列表输出。 #### 五、Map函数的应用场景 1. **数据转换**:对于数据...
在本例中,我们使用了 Map 中的“cj”键对应的值来比较两个 Map 对象。 使用 Java 中的 Collections.sort() 方法和 Comparator 接口可以轻松地对 List 集合进行排序,包括根据 Map 中的某个 key 值对 List 集合进行...
此例中,我们使用了一个带有两个参数的lambda表达式`lambda x, y: x + y`,该表达式将两个列表中对应位置的元素相加。`map`函数将两个列表作为输入,并按照顺序传递给lambda表达式,最终得到新的列表`[5, 7, 9]`。 ...
Map接口中的元素由两部分组成:键(key)和值(value)。键用于唯一标识一个值,而值则表示与该键关联的数据。Map接口提供了添加、删除和查询元素的方法。 - **添加操作**:`void put(K key, V value)` 用于将指定...
在本例中,我们有一个名为`Point`的简单JavaBean实体类,包含两个整型属性`x`和`y`,以及对应的getter和setter方法。这个实体类用于演示如何处理Map中复杂的键类型,即自定义的JavaBean对象作为Key。 测试类`...
【JAVA编程百例】这个资源集包含了丰富的Java编程实例,旨在帮助学习者深入理解和掌握Java编程语言。在Java的世界里,实践是检验理论知识是否扎实的最好方式。通过实际编写和运行代码,开发者可以更好地理解Java语法...
`doubleselect`标签是Struts2提供的一个特殊标签,用于创建具有两个级联选择框的用户界面,通常用于父类别与子类别之间的关联选择,如在上述例子中的部门与人员选择。 在`doubleselect`标签中,`list`属性用于指定...
5. **函数式编程**:了解map、filter、reduce等高阶函数的用法,以及lamda表达式和闭包的概念。 6. **面向对象编程**:掌握类的定义、对象的创建、继承、封装和多态等核心概念。 7. **模块与包**:学习如何导入和...
例如,`find()`算法接受两个输入迭代器,一个指向容器的开始,另一个指向容器的结束,以及一个要查找的值。如果找到匹配的元素,返回对应的迭代器;否则,返回结束迭代器。 ```cpp template,typename T > ...
- **HashMap和TreeMap**:两种常用的Map实现,HashMap提供快速查找,TreeMap保持键的排序。 "Java编程百例"这个资源很可能包含了以上所有概念的实例,让初学者能够通过实践更好地理解和掌握Java编程。每项技术都有...
本文将详细介绍`$.each()`函数的基本用法、高级技巧以及实际应用场景。 #### 二、基础语法 `$.each()`函数的基本语法如下: ```javascript $.each(collection, callback); ``` - `collection`:需要遍历的集合,...
兔子问题,也被称为斐波那契序列,是一个常见的编程练习,它涉及计算一系列数字,其中每个数字是前两个数字之和。在C++中实现兔子问题可以演示递归、循环等编程技巧,同时也能帮助学习者理解动态规划的概念。 标签...
通过分析这些模板,我们可以更好地理解FreeMarker的用法。 在Struts与FreeMarker的整合中,通常需要在Struts的配置文件(struts-config.xml或struts2的struts.xml)中定义Action和对应的Result,指定使用FreeMarker...
这样的功能非常灵活,可以用于各种场景,包括动态调用类方法、处理回调...在本例中,`map`函数利用了这一特性,实现了对数组元素的遍历和累积操作。理解并掌握可变函数的用法,能够极大地提高代码的灵活性和可扩展性。
Java学习25例是一个集合了二十五个典型Java编程示例的资源包,旨在帮助初学者和进阶者更好地理解和掌握Java编程语言的核心概念与技术。这些实例覆盖了从基础语法到高级特性的广泛主题,是提升Java编程技能的理想资料...
在Hadoop生态系统中,MapReduce被广泛应用于大数据的处理,它将复杂的并行计算任务分解为两个主要阶段:Map(映射)和Reduce(规约)。在这个“MapReduce数据统计简单实例”中,我们将探讨如何使用Hadoop的Eclipse...
JSON(JavaScript Object Notation)是一种轻量级的...了解并熟练掌握这些库的基本用法,对于进行JSON相关的开发工作至关重要。在实际项目中,根据性能需求、兼容性和个人偏好,开发者可以选择合适的库进行JSON处理。
引用类型和原始类型具有不同的特征和用法,它们包括:大小和速度问题,这种类型以哪种类型的数据结构存储,当引用类型和原始类型用作某个类的实例数据时所指定的缺省值。 字符串操作 Java平台提供了两个类:String...
这个应用能够执行SQL Map中的SQL语句,并将结果输出到控制台。首先,你需要安装一个数据库,例如MySQL,然后创建相应的数据表和填充一些示例数据。 【配置数据库】 在这个例子中,MySQL被用来创建一个名为`USER_...