- 浏览: 546215 次
- 性别:
- 来自: 杭州
文章分类
最新评论
-
wa114d:
楼主工作几年了,好厉害
一个面试官对面试问题的分析 -
wobuxiaole:
Good,非常好
30岁前男人需要完成的事 -
小逗逗:
Good,非常好
30岁前男人需要完成的事 -
invincibleLiu:
好帖,要顶!(别投我隐藏啊,这是对BBS最原始一种支持)
Java:synchronized修饰符在静态方法与非静态方法上的区别 -
fayedShih:
第三题,不知道对不对
import java.util.con ...
企业牛逼面试题目 高手进来讨论答题
接下来看Predicate组
Predicate
AndPredicate
OrPredicate
AllPredicate
OnePredicate
NonePredicate
PredicateUtils
Predicate是Commons Collections中定义的一个接口,可以在org.apache.commons.collections包中找到。其中定义的方法签名如下:
public boolean evaluate(Object object)
它以一个Object对象为参数,处理后返回一个boolean值,检验某个对象是否满足某个条件。其实这个Predicate以及上一篇笔记提到的Comparator还有我们即将看到的Transformer和Closure等都有些类似C/C++中的函数指针,它们都只是提供简单而明确定义的函数功能而已。
跟其他组类似,Commons Collections也提供了一组定义好的Predicate类供我们使用,这些类都放在org.apache.commons.collections.functors包中。当然,我们也可以自定义Predicate,只要实现这个Predicate接口即可。在Commons Collections中我们也可以很方便使用的一组预定义复合Predicate,我们提供2个或不定数量个Predicate,然后交给它,它可以帮我们处理额外的逻辑,如AndPredicate处理两个Predicate,只有当两者都返回true它才返回true;AnyPredicate处理多个Predicate,当其中一个满足就返回true,等等。
看看具体的代码中如何使用这些Predicate吧:
package sean.study.commons.collections;
import org.apache.commons.collections.Predicate;
import org.apache.commons.collections.PredicateUtils;
import org.apache.commons.collections.functors.InstanceofPredicate;
import org.apache.commons.collections.functors.NotNullPredicate;
import org.apache.commons.lang.BooleanUtils;
import org.apache.commons.lang.StringUtils;
public class PredicateUsage {
public static void main(String[] args) {
demoPredicates();
}
public static void demoPredicates() {
System.out.println(StringUtils.center(" demoPredicates ", 40, "="));
Predicate p1 = new InstanceofPredicate(String.class);
Predicate p2 = NotNullPredicate.getInstance();
Predicate p3 = new Predicate() {
public boolean evaluate(Object obj) {
String str = (String) obj;
return StringUtils.isAlphanumeric(str)
&& str.length() >= 6
&& str.length() <= 10;
}
};
Predicate p4 = PredicateUtils.allPredicate(new Predicate[]{p1, p2, p3}); String input = "ABCD1234";
Object[] raw = new Object[] {
"Is '",
input,
"' a valid input? ",
BooleanUtils.toStringYesNo(p4.evaluate(input)),
"."
};
System.out.println(StringUtils.join(raw));
System.out.println(StringUtils.repeat("=", 40));
}
}
输出结果如下:
============ demoPredicates ============
Is 'ABCD1234' a valid input? yes.
========================================
这里面我首先定义了3个简单的Predicate,p1判断对象是否为String的实例,p2判断是否对象为null,p3是自定义的,判断是否为数字字母的组合,并且长度在6~10字符。然后我用AllPredicate将它们组合到一起,成为p4,当p1、p2、p3都满足时,p4的evaluate方法才返回true。利用Predicate我们可以把判断true或false的逻辑从特定的业务代码分离出来,以后我们重用也好,重新组装也好,都是很方便的。
发表评论
-
妙用Commons良药 StringUtils
2011-03-08 10:48 1318来自:http://lighter.iteye.c ... -
分享 commons io 工具类 代码
2011-03-04 17:53 1148来自:http://www.iteye.com/topic/5 ... -
Jakarta Commons笔记] 结语
2008-11-12 11:15 1276在前面的随笔中,我们一起过了一遍Jakarta Common ... -
Commons Collections - Transformer组 补充
2008-11-12 11:11 1290// transformer setup T ... -
[Jakarta Commons笔记] Commons Collections - Closure组
2008-11-12 10:31 1577接下来看Closure组。 Closure Chaine ... -
Commons Collections - Transformer
2008-11-12 10:19 1506接下来看Transformer组。 T ... -
Commons Collections - Comparator组
2008-11-12 09:55 1371接下来我们会讲到辅助类,首先看Comparator组。 R ... -
Commons Collections - Collection 组
2008-11-12 09:43 1320接下来看看Collection组。 TypedColle ... -
[Jakarta Commons笔记] Commons Collections - Map组
2008-11-12 09:39 1572接下来看Map组。 BidiMap MultiMap L ... -
[Jakarta Commons笔记] Commons Collections - Buffer组
2008-11-12 09:23 1402来看Buffer组。 Buffer BlockingBuf ... -
[Jakarta Commons笔记] Commons Collections - Bag组
2008-11-11 17:48 1294先来看Bag组。 Bag HashBag BagUtils ... -
[Jakarta Commons笔记] Commons Collections
2008-11-11 17:30 2341Commons Collections,又是 ... -
[Jakarta Commons笔记] 代码范例 - BeanUtils
2008-11-11 16:56 1225假定我们有如下两个标准的JavaBean: /** Ad ... -
[Jakarta Commons笔记] Commons BeanUtils
2008-11-11 16:44 1933Jakarta Commons项目提供了相当丰富的API,我们 ... -
[Jakarta Commons笔记] org.apache.commons.lang.time
2008-11-11 16:14 1817好了,来看我在Common Lang中最后要讲的一个包:org ... -
[Jakarta Commons笔记] org.apache.commons.lang.math
2008-11-11 16:12 1807在Jakarta Commons中,专门处理数学计算的类分别可 ... -
[Jakarta Commons笔记] commons.lang.builder
2008-11-11 15:36 1102在前面的专题文章中,我们一起过了一遍org.apache.c ... -
[Jakarta Commons笔记] 代码范例 - ArrayUtils StringUtils
2008-11-11 15:34 1679数组是我们经常需要使用到的一种数据结构,但是由于Java本身 ... -
[Jakarta Commons笔记] Commons Lang
2008-11-11 15:32 2684跟java.lang这个包的作用类似,Commons Lang ... -
[Jakarta Commons笔记] 开篇
2008-11-11 13:45 1144在Java的世界,有很多(成千上万)开源的框架,有成功的,也 ...
相关推荐
apache-jakarta-commons-collections.jar apache-jakarta-commons-discovery.jar apache-jakarta-commons-email.jar apache-jakarta-commons-fileupload.jar apache-jakarta-commons-httpclient.jar apache-jakarta-...
jakarta-commons 相关依赖包,文件列表: commons-attributes-api.jar commons-attributes-compiler.jar commons-beanutils.jar commons-codec.jar commons-collections.jar commons-dbcp.jar commons-digester.jar ...
1. `commons-collections-3.1.jar`:这是Apache Commons Collections库的一个版本,它提供了大量的集合操作工具类和算法,包括对列表、映射、队列等数据结构的操作,以及一些实用的转换和比较方法。在DBCP中,这个库...
`Commons-collections-3.2-API.chm`文档详细列出了所有这些功能的API,帮助开发者理解和使用这些工具。 2. **Commons Configuration**: 这个库是为了处理配置文件而设计的,支持多种类型的配置源,如XML、属性...
tomcat10 升级转换工具 命令:java -jar jakartaee-migration-版本号-shaded.jar D:\源路径\demo.war D:\目标路径\newdemo.war
这个库提供了一个统一的日志接口,允许开发者在不修改代码的情况下切换不同的日志实现,如Log4j、Java内置的java.util.logging或Jakarta LogKit等。Commons Logging的主要优势在于解耦,它使得应用程序与具体日志...
jakarta-httpcore-4.0-alpha2.jar用于移动开发的包
离线安装包,亲测可用
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
离线安装包,亲测可用
网上找不全,官网资源又太分散,自己动手,丰衣足食,这是我挨个下载的Apache jakarta commons,有windows与linux两版本(全都有源码),甚至分离出去的HttpClient都在其中,愿更多的人了解并使用Apache,这是一个...
【Jakarta Commons笔记】 Jakarta Commons是Apache软件基金会的一个项目集合,它提供了许多Java开发中常用的工具类和组件。这个项目旨在减少重复的工作,通过共享和重用代码,提高开发效率。Jakarta Commons包含了...
Jakarta Commons是Apache软件基金会的一个项目集合,它包含了一系列实用工具类,用于简化Java开发工作。其中,Lang组件是Jakarta Commons中的一个核心模块,它提供了大量的静态方法,用于处理基本Java对象,如字符串...
官方离线安装包,测试可用。使用rpm -ivh [rpm完整包名] 进行安装
jakarta commons-collections 3.2 jakarta commons-logging 1.1.1 ezmorph 1.0.6 Other dependencies are needed if working with XML, Groovy and JRuby. Please review the Dependencies report to know more ...
在本话题中,我们关注的是三个特定的jar包:jakarta-taglibs-standard-1.1.2、commons-fileupload-1.3.2和commons-io-2.5。 1. **jakarta-taglibs-standard-1.1.2**: 这个jar包是Jakarta Taglibs项目的一部分,...
jakarta commons-logging 1.1.1
DBCP(DataBase Connection Pool)是 apache common上的一个 java 连接池项目,也是 tomcat 使用的连接池组件,依赖 于Jakarta commons-pool 对象池机制,DBCP可以直接的在应用程序中使用。 使用DBCP会用到commons-...
赠送jar包:jakarta.activation-api-1.2.2.jar; 赠送原API文档:jakarta.activation-api-1.2.2-javadoc.jar; 赠送源代码:jakarta.activation-api-1.2.2-sources.jar; 赠送Maven依赖信息文件:jakarta.activation...
Apache的FTP库是Java开发中一个非常实用的工具,它主要包含了两个核心的JAR包:`commons-net-1.4.1.jar`和`jakarta-oro-2.0.8.jar`。这两个包提供了丰富的功能,允许开发者在Java应用中实现FTP(文件传输协议)的...