`
lighter
  • 浏览: 500930 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

妙用Commons良药 <六>

阅读更多
妙用Commons良药 <六>
1、定义toString(),hashCode(),equals()等内容
toString()方法举例:
import org.apache.commons.lang.builder.ToStringBuilder;
import org.apache.commons.lang.builder.ToStringStyle;

public String toString( ) {
    return new ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE)
                   .append("lastName", lastName)
                   .append("firstName", firstName)
                   .toString( );
}

提示一点,ToStringBuilder(this, ToStringStyle.MULTI_LINE_STYLE),第二个参数当然也可以为ToStringStyle.DEFAULT_STYLE,ToStringStyle.NO_FIELD_NAMES_STYLE和ToStringStyle.SIMPLE_STYLE


hashCode()与equals()方法举例:
import org.apache.commons.lang.builder.HashCodeBuilder;
import org.apache.commons.lang.builder.EqualsBuilder;

public class PoliticalCandidate {
    public int hashCode( ) {
        return new HashCodeBuilder(17, 37) //两个不为0且非偶的质数
                       .append(firstName)
                       .append(lastName).toHashCode( );
    }

    public boolean equals(Object o) {
        boolean equals = false;
        if ( o != null && 
            PoliticalCandidate.class.isAssignableFrom(o) ) {
            PoliticalCandidate pc = (PoliticalCandidate) o;
            equals = (new EqualsBuilder( )
                       .append(firstName, ps.firstName)
                       .append(lastName, ps.lastName)).isEquals( );
        }
        return equals;
    }
}



2、操作数组内容
ArrayUtils.toString()方法可以输入数组内容,此方法接受任意一个数组作为参数并输出其内容,输出时所有元素位于大括号,中间逗号隔开.举例:
int[] intArray = new int[] { 2, 3, 4, 5, 6 };
int[] multiDimension = new int[][] { { 1, 2, 3 }, { 2, 3 }, {5, 6, 7} };
System.out.println( "intArray: " + ArrayUtils.toString( intArray ) );
System.out.println( "multiDimension: " + ArrayUtils.toString( multiDimension ) );


使用ArrayUtils.reverse()方法可以反转一个数组.
使用ArrayUtils.toObject()和ArrayUtils.toPrimitive()两个方法,即可互相转换基本类型数组和对象数组。


当然,Commons也提供了方便的方法,可以在数组中搜索特定项.
使用ArrayUtils.contains()方法可以判定数组是否存在指完元素.当然有两个比较实用的方法ArrayUtils.lastIndexOf()和ArrayUtils.indexOf(),举例如下:
import org.apache.commons.lang.ArrayUtils;

String[] stringArray = { "Red", "Orange", "Blue", "Brown", "Red" };
boolean containsBlue = ArrayUtils.contains( stringArray, "Blue" );
int indexOfRed = ArrayUtils.indexOf( stringArray, "Red");
int lastIndexOfRed = ArrayUtils.lastIndexOf( string, "Red" );

System.out.println( "Array contains 'Blue'? " + containsBlue );
System.out.println( "Index of 'Red'? " + indexOfRed );
System.out.println( "Last Index of 'Red'? " + lastIndexOfRed );

结果如下:
引用
Array contains 'Blue'? true
Index of 'Red'? 0
Last Index of 'Red'? 4


另外一个功能,你可以很容易将一个二维对象数组成一个Map对象,只需要ArrayUtils.toMap()这一个方法即可.举例如下:
import org.apache.commons.lang.ArrayUtils;

Object[] weightArray = 
    new Object[][] { {"H" , new Double( 1.007)},
                     {"He", new Double( 4.002)},
                     {"Li", new Double( 6.941)},
                     {"Be", new Double( 9.012)},
                     {"B",  new Double(10.811)},
                     {"Ne", new Double(20.180)} };
Map weights = ArrayUtils.toMap( weightArray );
Double hydrogenWeight = map.get( "H" );



3、怎样格式化日期
如果你想格式化一个的时候,需要注意一下JDK中自带的SimpleDatFormat类不是线程安全的。你可以用FastDateFormat或DateFormatUtils来实现你想要的功能。如果在你的系统中有多个线程共享一个SimpleDatFormat实例,建议你马上改为SimpleDatFormat类.
举例:
Date now = new Date( );
String isoDT = DateFormatUtils.ISO_DATETIME_TIME_ZONE_FORMAT.format( now );
System.out.println( "It is currently: " + isoDT );

结果是:
引用
It is currently: 2004-03-26T16:20:00-07:00


又举一个例子,如下:
FastDateFormat formatter = 
new FastDateFormat( "yyyy-mm", TimeZone.getDefault( ), Locale.getDefault( ));
String output = formatter.format( new Date( ) );
// output equals "2003-10"


DateFormatUtils的时间格式如下:
ISO_DATE_FORMAT
 yyyy-MM-dd"2004-01-02"
 
ISO_DATE_TIME_ZONE_FORMAT
 yyyy-MM-ddZZ"2004-01-02-07:00"
 
ISO_DATETIME_FORMAT
 yyyy-MM-dd'T'HH:mm:ss"2004-01-02T23:22:12"
 
ISO_DATETIME_TIME_ZONE_FORMAT
 yyyy-MM-dd'T'HH:mm:ssZZ"2004-01-02T21:13:45-07:00"
 
ISO_TIME_FORMAT
 'T'HH:mm:ss"T04:23:22"
 
ISO_TIME_NO_T_FORMAT
 HH:mm:ss"05:12:34"
 
ISO_TIME_NO_T_TIME_ZONE_FORMAT
 HH:mm:ssZZ"12:32:22-07:00"
 
ISO_TIME_TIME_ZONE_FORMAT
 'T'HH:mm:ssZZ"T18:23:22-07:00"
 
SMTP_DATETIME_FORMAT
 EEE, dd MMM yyyy HH:mm:ss Z"Wed, 01 Feb 2004 20:03:01 CST"


注:本文章代码均来自<<Jarkata Commonss Cookbook>>一书第一章的内容,下一讲主要说一下Functors方面的内容

分享到:
评论
1 楼 lighter 2007-09-02  
http://menjoy.iteye.com/blog/49480
整理的Commons一些类的主要用途

相关推荐

    Springboot集成Ueditor详细文档说明

    &lt;artifactId&gt;commons-fileupload&lt;/artifactId&gt; &lt;version&gt;1.3.2&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;commons-io&lt;/groupId&gt; &lt;artifactId&gt;commons-io&lt;/artifactId&gt; &lt;version&gt;2.5&lt;/version&gt; &lt;/...

    Apache Commons 所有包最新版本 含SRC (6/7)

    commons-attributes-2.2-src.zip&lt;br&gt;commons-attributes-2.2.zip&lt;br&gt;commons-beanutils-1.8.0-BETA-src.zip&lt;br&gt;commons-beanutils-1.8.0-BETA.zip&lt;br&gt;commons-betwixt-0.8-src.zip&lt;br&gt;commons-betwixt-0.8.zip&lt;br&gt;...

    Apache Commons 所有包最新版本 含SRC (5/7)

    commons-attributes-2.2-src.zip&lt;br&gt;commons-attributes-2.2.zip&lt;br&gt;commons-beanutils-1.8.0-BETA-src.zip&lt;br&gt;commons-beanutils-1.8.0-BETA.zip&lt;br&gt;commons-betwixt-0.8-src.zip&lt;br&gt;commons-betwixt-0.8.zip&lt;br&gt;...

    Apache Commons 所有包最新版本 含SRC (1/7)

    commons-attributes-2.2-src.zip&lt;br&gt;commons-attributes-2.2.zip&lt;br&gt;commons-beanutils-1.8.0-BETA-src.zip&lt;br&gt;commons-beanutils-1.8.0-BETA.zip&lt;br&gt;commons-betwixt-0.8-src.zip&lt;br&gt;commons-betwixt-0.8.zip&lt;br&gt;...

    Apache Commons 所有包最新版本 含SRC (3/7)

    commons-attributes-2.2-src.zip&lt;br&gt;commons-attributes-2.2.zip&lt;br&gt;commons-beanutils-1.8.0-BETA-src.zip&lt;br&gt;commons-beanutils-1.8.0-BETA.zip&lt;br&gt;commons-betwixt-0.8-src.zip&lt;br&gt;commons-betwixt-0.8.zip&lt;br&gt;...

    Apache Commons 所有包最新版本 含SRC (7/7)

    commons-attributes-2.2-src.zip&lt;br&gt;commons-attributes-2.2.zip&lt;br&gt;commons-beanutils-1.8.0-BETA-src.zip&lt;br&gt;commons-beanutils-1.8.0-BETA.zip&lt;br&gt;commons-betwixt-0.8-src.zip&lt;br&gt;commons-betwixt-0.8.zip&lt;br&gt;...

    aspose-words-15.8.0-jdk16.jar.rar

    添加依赖: &lt;dependency&gt; &lt;groupId&gt;com.itextpdf&lt;/groupId&gt; &lt;artifactId&gt;itext7-core... &lt;groupId&gt;org.apache.commons&lt;/groupId&gt; &lt;artifactId&gt;commons-io&lt;/artifactId&gt; &lt;version&gt;1.3.2&lt;/version&gt; &lt;/dependency&gt;

    Apache Commons 所有包最新版本 含SRC (4/7)

    commons-attributes-2.2-src.zip&lt;br&gt;commons-attributes-2.2.zip&lt;br&gt;commons-beanutils-1.8.0-BETA-src.zip&lt;br&gt;commons-beanutils-1.8.0-BETA.zip&lt;br&gt;commons-betwixt-0.8-src.zip&lt;br&gt;commons-betwixt-0.8.zip&lt;br&gt;...

    Apache Commons 所有包最新版本 含SRC (2/7)

    commons-attributes-2.2-src.zip&lt;br&gt;commons-attributes-2.2.zip&lt;br&gt;commons-beanutils-1.8.0-BETA-src.zip&lt;br&gt;commons-beanutils-1.8.0-BETA.zip&lt;br&gt;commons-betwixt-0.8-src.zip&lt;br&gt;commons-betwixt-0.8.zip&lt;br&gt;...

    client发送短信验证码(云之讯)

    &lt;artifactId&gt;commons-httpclient&lt;/artifactId&gt; &lt;version&gt;3.0&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;commons-lang&lt;/groupId&gt; &lt;artifactId&gt;commons-lang&lt;/artifactId&gt; &lt;version&gt;2.6&lt;/version&gt; &lt;/...

    基于springboot演示resuful api、mock请求、validate验证、异常捕捉、aop切面编程+源代码+文档说

    &lt;version&gt;${commons-lang3.version}&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.projectlombok&lt;/groupId&gt; &lt;artifactId&gt;lombok&lt;/artifactId&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.spring...

    java实现poi 在线预览,excel,word直接在页面显示,附带文件上传,多文件上传

    &lt;artifactId&gt;commons-collections4&lt;/artifactId&gt; &lt;version&gt;4.1&lt;/version&gt; &lt;/dependency&gt; &lt;dependency&gt; &lt;groupId&gt;org.apache.poi&lt;/groupId&gt; &lt;artifactId&gt;poi&lt;/artifactId&gt; &lt;version&gt;3.17&lt;/version&gt; &lt;/...

    struts框架jar包

    struts-1.3.8 包(&lt;br&gt;&lt;br&gt;antlr-2.7.2.jar&lt;br&gt;bsf-2.3.0.jar&lt;br&gt;commons-beanutils-1.7.0.jar&lt;br&gt;commons-chain-1.1.jar&lt;br&gt;commons-digester-1.8.jar&lt;br&gt;commons-fileupload-1.1.1.jar&lt;br&gt;commons-io-1.1.jar&lt;br&gt;...

    Java 课程设计 高校公寓管理系统

    &lt;artifactId&gt;standard&lt;/artifactId&gt; &lt;version&gt;1.1.2&lt;/version&gt; &lt;artifactId&gt;jstl&lt;/artifactId&gt; ... &lt;artifactId&gt;commons-io&lt;/artifactId&gt; &lt;version&gt;2.11.0&lt;/version&gt; &lt;artifactId&gt;javax.servlet-api&lt;/artifactId&gt;

    Java 登录注册案例实例

    &lt;artifactId&gt;commons-io&lt;/artifactId&gt; &lt;version&gt;2.11.0&lt;/version&gt; &lt;artifactId&gt;mybatis&lt;/artifactId&gt; &lt;version&gt;3.5.5&lt;/version&gt; &lt;artifactId&gt;mysql-connector-java&lt;/artifactId&gt; &lt;version&gt;8.0.28&lt;/version&gt; ...

    JSF与Shale开发用包

    其中包含:shale-core.jar&lt;br&gt;commons-beanutils.jar&lt;br&gt;commons-chain.jar&lt;br&gt;commons-codec.jar&lt;br&gt;commons-collections.jar&lt;br&gt;commons-digester.jar&lt;br&gt;commons-el.jar&lt;br&gt;commons-fileupload.jar&lt;br&gt;commons-...

    springcloud+springcloud alibaba完整学习项目

    &lt;module&gt;cloud-api-commons&lt;/module&gt; &lt;module&gt;cloud-eureka-server7001&lt;/module&gt; &lt;module&gt;cloud-eureka-server7002&lt;/module&gt; &lt;module&gt;cloud-comsumer-order80&lt;/module&gt; &lt;module&gt;cloud-provider-payment8001&lt;/...

    spring-hibernate-dwr实例

    collections-2.1.1.jar&lt;br&gt;commons-logging-1.0.4.jar&lt;br&gt;dom4j-1.6.1.jar&lt;br&gt;ehcache-1.1.jar&lt;br&gt;hibernate3.jar&lt;br&gt;jaas.jar&lt;br&gt;jaxen-1.1-beta-7.jar&lt;br&gt;jdbc2_0-stdext.jar&lt;br&gt;jta.jar&lt;br&gt;log4j-1.2.11.jar&lt;br&gt;...

    spring+struts+hibernate+dwr+jstl做的实例

    api.jar&lt;br&gt;jxl.jar&lt;br&gt;itext-1.3.jar&lt;br&gt;poi-2.5.1.jar&lt;br&gt;cos.jar&lt;br&gt;velocity-1.5.jar&lt;br&gt;velocity-tools-view-1.3.jar&lt;br&gt;commons-codec.jar&lt;br&gt;antlr.jar&lt;br&gt;commons-beanutils.jar&lt;br&gt;commons-digester.jar&lt;br...

    ssm的jar包

    ssm在maven项目管理下的pom文件,jar包依赖 &lt;dependency&gt; &lt;groupId&gt;javax.servlet&lt;/groupId&gt; &lt;artifactId&gt;javax.servlet-api&lt;/artifactId&gt; ... &lt;artifactId&gt;commons-codec&lt;/artifactId&gt; &lt;version&gt;1.10&lt;/ver

Global site tag (gtag.js) - Google Analytics