apache common常用包说明

StringUitls

字符串判断: 
例1: 判断是否为空(blank):
StringUtils.isBlank(null): true
StringUtils.isBlank(""): true
StringUtils.isBlank(" "): true

例2: 判断是否不为空(blank):
StringUtils.isNotBlank(null): false
StringUtils.isNotBlank(""): false
StringUtils.isNotBlank(" "): false

例3: 判断是否为空(empty):
StringUtils.isEmpty(null): true
StringUtils.isEmpty(""): true
StringUtils.isEmpty(" "): false

例4: 判断是否不为空(empty):
StringUtils.isNotEmpty(null): false
StringUtils.isNotEmpty(""): false
StringUtils.isNotEmpty(" "): true

例5: 判断是否是字母:
StringUtils.isAlpha("ab"): true
StringUtils.isAlpha("CD"): true
StringUtils.isAlpha("efGH"): true
StringUtils.isAlpha("12"): false
StringUtils.isAlpha("12ab"): false

例6: 判断是否是数字:
StringUtils.isNumeric("ab"): false
StringUtils.isNumeric("CD"): false
StringUtils.isNumeric("efGH"): false
StringUtils.isNumeric("12"): true
StringUtils.isNumeric("12ab"): false

例7: 判断是否是字母或数字:
StringUtils.isAlphanumeric("ab"): true
StringUtils.isAlphanumeric("CD"): true
StringUtils.isAlphanumeric("efGH"): true
StringUtils.isAlphanumeric("12"): true
StringUtils.isAlphanumeric("12ab"): true

字符串trim及默认处理:
例1: 去除字符串中的空白(包括全角空格、TAB).
StringUtils.deleteWhitespace("aa bb cc"): aabbcc
StringUtils.deleteWhitespace(" aa  bb    cc "): aabbcc

例2: 去除字符串头尾空白(包括全角空格、TAB).
StringUtils.trim(" abc  "): abc
StringUtils.trim(" abc"):  abc
StringUtils.trim("    abc"): abc

例3: 去除字符串头尾空白(包括TAB,但不包括全角空格), 结果为空串时返回空串.
StringUtils.trimToEmpty("   "): 
StringUtils.trimToEmpty(" "):  
StringUtils.trimToEmpty("    "): 

例4: 去除字符串头尾空白(包括TAB,但不包括全角空格), 结果为空串时返回null.
StringUtils.trimToNull("   "): null
StringUtils.trimToNull(" "):  
StringUtils.trimToNull("    "): null

例5: 返回可以处理null的toString().
StringUtils.defaultString("aaaa"): aaaa

 

字符串包含检查: 
例1: 检查字符串(参数1)是否包含字符串(参数2).
StringUtils.contains("defg", "ef"): true
StringUtils.contains("defg", "EF"): false
StringUtils.contains("defg", "fe"): false
StringUtils.contains("ef", "defg"): false
StringUtils.contains("aad", "aadd"): false
StringUtils.contains("defg", "aadd"): false

例2: 检查字符串(参数1)是否包含字符串(参数2), 忽略大小写.
StringUtils.containsIgnoreCase("defg", "EF"): true

例3: 检查字符串(参数1)中的字符是否全为字符串(参数2)中的字符的子集.
StringUtils.containsOnly("defg", "ef"): false
StringUtils.containsOnly("ef", "defg"): true
StringUtils.containsOnly("fe", "defg"): true
StringUtils.containsOnly("aad", "aadd"): true
StringUtils.containsOnly("defg", "aadd"): false

例4: 检查字符串(参数1)和字符串(参数2)中的字符是否不存在交集.
StringUtils.containsNone("defg", "ef"): false
StringUtils.containsNone("defg", "fe"): false
StringUtils.containsNone("ef", "defg"): false
StringUtils.containsNone("aad", "aadd"): false
StringUtils.containsNone("defg", "aadd"): false
StringUtils.containsNone("defg", "xvy"): true

例5: 检查字符串(参数1)和字符串(参数2)中的字符是否存在交集.
StringUtils.containsAny("defg", "ef"): true
StringUtils.containsAny("defg", "fe"): true
StringUtils.containsAny("ef", "defg"): true
StringUtils.containsAny("aad", "aadd"): true
StringUtils.containsAny("defg", "aadd"): true
StringUtils.containsAny("defg", "xvy"): false

 

字符串处理: 
例1: 将字符串重复n次,将文字按某宽度居中,将字符串数组用某字符串连接.
//代码片段:
String[] header = new String[3];
header[0] = StringUtils.repeat("*", 50);
header[1] = StringUtils.center("  StringUtilsDemo  ", 50, "^O^");
header[2] = header[0];
String head = StringUtils.join(header, "/n");
System.out.println(head);
//运行结果:
**************************************************
^O^^O^^O^^O^^O^  StringUtilsDemo  ^O^^O^^O^^O^^O^^
**************************************************

例2: 缩短到某长度,用...结尾.
StringUtils.abbreviate("The quick brown fox jumps over the lazy dog.", 10): The qui...
StringUtils.abbreviate("The quick brown fox jumps over the lazy dog.", 15, 10): ... fox...

 

字符串索引及截取: 
例1: 返回两字符串不同处索引号.
StringUtils.indexOfDifference("aaabc", "aaacc"): 3

例2: 返回字符串(参数2)不同于字符串(参数1)的那部分字符串.
StringUtils.difference("aaabcde", "aaaccde"): ccde

例3: 返回字符串(参数1)去掉字符串(参数2)后的那部分字符串,    如果字符串(参数1)不是以字符串(参数2)结尾则返回原串.
StringUtils.chomp("aaabcde", "de"): aaabc
StringUtils.chomp("aaabcde", "ade"): aaabcde
StringUtils.chomp("aaabcdexyz", "de"): aaabcdexyz


ArrayUtils


例1: 数组打印:
数组aStr: { "abc", "uvw", "xyz", "123", "456" }
ArrayUtils.toString(aStr):{abc,uvw,xyz,123,456}

例2: 数组是否包含某元素:
数组aStr: { "abc", "uvw", "xyz", "123", "456" }
ArrayUtils.contains(aStr, "456"): true
ArrayUtils.contains(aStr, "XYZ"): false

NumberUtils

例1: 判断1个字符串中的字符是否全为数字:
NumberUtils.isDigits("11"): true
NumberUtils.isDigits("011"): true
NumberUtils.isDigits("0.11"): false

例2: 判断1个字符串是否为数字:
NumberUtils.isNumber("11"): true
NumberUtils.isNumber("011"): true

CollectionUtils


集合判断: 
例1: 判断集合是否为空:
CollectionUtils.isEmpty(null): true
CollectionUtils.isEmpty(new ArrayList()): true
CollectionUtils.isEmpty({a,b}): false

例2: 判断集合是否不为空:
CollectionUtils.isNotEmpty(null): false
CollectionUtils.isNotEmpty(new ArrayList()): false
CollectionUtils.isNotEmpty({a,b}): true


2个集合间的操作: 
集合a: {1,2,3,3,4,5}
集合b: {3,4,4,5,6,7}
CollectionUtils.union(a, b)(并集): {1,2,3,3,4,4,5,6,7}
CollectionUtils.intersection(a, b)(交集): {3,4,5}
CollectionUtils.disjunction(a, b)(交集的补集): {1,2,3,4,6,7}
CollectionUtils.disjunction(b, a)(交集的补集): {1,2,3,4,6,7}
CollectionUtils.subtract(a, b)(A与B的差): {1,2,3}
CollectionUtils.subtract(b, a)(B与A的差): {4,6,7}


BeanUtils

1.什么是BeanUtils:

BeanUtils主要提供了对于JavaBean进行各种操作。

2.BeanUtils的作用:

在一般的写bean组件的时候,都必须要写setter和getter方法,当然假如我们事先已经知道bean的相关属性和方法,写bean是比较简单的,但是组件太多的时候,重复编写经常是枯燥乏味令人厌烦的。但当有些时候我么需要调用动态对象的属性的时候,我们应该怎么来设定和获取对象的属性呢?BeanUtils就可以帮助我们来解决这个问题。它需要Jakarta-Commons -Collections包和Jakarta-Commons -logging包的支持。

 

3. org.apache.commons.beanutils

这个包主要提供用于操作JavaBean的工具类,Jakarta-Common-BeanUtils的主要功能都在这个包里实现。

BeanUtils可以直接get和set一个属性的值。它将property分成3种类型:

       1Simple——简单类型,如Stirng、Int……

  (对于Simple类型,第二个参数直接是属性名即可,详见代码)

       2Indexed——索引类型,如 数组、arrayList……

      (对于Indexed,则为“属性名[索引值]”,注意这里对于ArrayList和数组都可以用一样的方式进行操作,详见代码)

       3Maped——这个不用说也该知道,就是指Map,比如HashMap……

       (对于Map类型,则需要以“属性名(key值)”的形式,详见代码)

    访问不同类型的数据可以直接调用函数getProperty和setProperty。它们都只有2个参数,第一个是JavaBean对象,第二个是要操作的属性名。

 

4.Converter 把Request或ResultSet中的字符串绑定到对象的属性 
   经常要从request,resultSet等对象取出值来赋入bean中,如果不用MVC框架的绑定功能的话,下面的代码谁都写腻了。
String a = request.getParameter("a");   bean.setA(a);  

String b = request.getParameter("b");  bean.setB(b);

不妨写一个Binder自动绑定所有属性:

复制代码

MyBean bean 
;

        HashMap map = new HashMap();

        Enumeration names = request.getParameterNames();

        while (names.hasMoreElements())

        {

          String name = (String) names.nextElement();

          map.put(name, request.getParameterValues(name));

        }

     BeanUtils.populate(bean, map);
复制代码

 

 其中BeanUtils的populate方法(Struts用于将一个map的值填充到一个bean中)或者getProperty,setProperty方法其实都会调用convert进行转换。
     但Converter只支持一些基本的类型,甚至连java.util.Date类型也不支持。而且它比较笨的一个地方是当遇到不认识的类型时,居然会抛出异常来。 对于Date类型,我参考它的sqldate类型实现了一个Converter,而且添加了一个设置日期格式的函数。
要把这个Converter注册,需要如下语句:

//因为要注册converter,所以不能再使用BeanUtils的静态方法了,必须创建BeanUtilsBean实例:

BeanUtilsBean beanUtils =

            new BeanUtilsBean( convertUtils, new PropertyUtilsBean() ) ;

        beanUtils.setProperty( bean, name, value ) ;

 

 

5.BeanUtils在Struts中的应用:

下面的代码是我们经常在Struts中为了获得浏览器带来的参数的方法:

复制代码
DynaActionForm daf = (DynaActionForm)form ;

        User user = new User() ;

        user.setId( daf.getString( "id" ) ) ;

        user.setPassword( daf.getString( "password" ) ) ;

        user.setUsername( daf.getString( "password" ) ) ;


复制代码

 

是不是觉得每次写这些都是在重复造轮子呢?

在看看用BeanUtils写的:

J

BeanUtils.copyProperties( user, daf ) ;

 

就是这么简单

 

6.实例

复制代码
public class Test {

    private String name; 

    private HashMap address = new HashMap(); 

    private String[] otherInfo; 

    private ArrayList product; 

    private ArrayList employee; 

    private HashMap telephone;

省略get/set

}
复制代码

 

 

MainClass:

Jakarta-Commons- BeanUtils1.8.jar+JDK1.5

复制代码
package com.cache.domain ;

 

import java.util.HashMap ;

 

import org.apache.commons.beanutils.BeanUtils ;

 

/**

 * @Author:Tony.Zhang setpsw@gmail.com Apr 22, 2009 1:34:16 PM

 
*/

public class MainClass {

 

    /**

     * 
@param args

     * 
@throws Exception

     
*/

    public static void main( String[] args ) throws Exception{

        Test test = new Test();

        test.setName( "zhangyi" );

        // BeanUtils.getProperty( bean, name )

        
// 动态取得

        System.out.println(BeanUtils.getProperty( test, "name" ));

        

        HashMap map = new HashMap();

        map.put( "1", "13880808080" );

        map.put( "2", "13550505050" );

        // BeanUtils.setProperty( bean, name, value )

        BeanUtils.setProperty( test, "telephone", map );

        // 动态取得

        System.out.println(BeanUtils.getProperty( test, "telephone(1)" ));

       

        /**

         * 直接进行Bean之间的clone 复制后的2个Bean的同一个属性可能拥有同一个对象的ref,

         * 这个在使用时要小心,特别是对于属性为类的情况。

         
*/

        Test test2 = new Test();

        BeanUtils.copyProperties( test2, test );

        System.out.println(BeanUtils.getProperty( test2, "name" ));

        

    }

}

复制代码

 

注:以上实例使用

其余的功能大家继续挖掘吧,可以参考官方API的说明J

ConvertUtilsBean convertUtils = new ConvertUtilsBean();

        DateConverter dateConverter = new DateConverter();

        convertUtils.register(dateConverter,Date.class);

 


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Apache Common Lang3是一个Java开发工具,提供了许多常见的工具类和方法来简化Java编程的一些常见任务。但是,目前Apache Common Lang3的官方文档中只提供了英文版的javadoc,并没有提供官方的中文版。 不过,虽然没有官方的中文版javadoc,但有很多开发者和社区成员提供了自己翻译的中文版javadoc,可以通过搜索引擎来查找这些翻译版本。这些翻译版本通常由一些Java开发者或者爱好者自愿进行的,虽然可能不是官方的版本,但仍然可以提供很大的参考价值。 在查找中文版javadoc时,建议先通过搜索引擎输入“Apache Common Lang3中文版javadoc”这样的关键词进行搜索。这样可以找到一些个人或组织提供的翻译版本。在搜索结果中选择一个可靠的来源,例如来自知名的技术论坛或博客,以确保所查找到的中文版javadoc的质量和准确性。 如果你在使用Apache Common Lang3时遇到了问题,还可以参考官方英文版的javadoc。虽然可能需要花费一些时间来理解和翻译,但这仍然是最权威的文档来源,可以提供详细的API说明和用法示例,帮助你解决问题。 总之,虽然缺少官方的中文版javadoc,但通过搜索引擎可以找到一些非官方的中文翻译版本,这些翻译版本可以帮助你理解和使用Apache Common Lang3。同时,官方英文版的javadoc还是最权威的文档来源,可以作为参考来解决具体的问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值