关于apache-commons的学习笔记 (一lang包下常用的工具)



本文只是个人笔记
测试ReflectionToStringBuilder中的toString()方法,实际上是重写了对象的toString方法
@Override
    public String toString() {
     return ReflectionToStringBuilder.toString( this );
 }

PoliticalCandidate candidate = new PoliticalCandidate( "Jefferson", "Thomas", dob, moneyRaised );
 
  System.out.println( candidate );

输出的内容:testCommonsLang.PoliticalCandidate@9506dc4[lastName=Jefferson,firstName=Thomas,dateOfBirth=Sat Apr 13 14:55:51 CST 1743,moneyRaised=293829292.930000007152557373046875]

//测试builder下面的HashCodeBuilder,EqualsBuilder,CompareToBuilder自动生成的方法
 //CompareToBuilder.reflectionCompare()这个方法比较对象中的属性是否相等,相等则返回0.否则返回其他值就是不相等。
 EqualsBuilder.reflectionEquals()是直接通过反射来判断对象中的内容是否相等
   public int compareTo(Object obj) {
        return CompareToBuilder.reflectionCompare(this, obj);
    }

 @Override
    public boolean equals(Object o) {
  return EqualsBuilder.reflectionEquals(this, o);
 }

PoliticalCandidate candidate1 = new PoliticalCandidate( "Jefferson", "Thomas", dob, moneyRaised );
  PoliticalCandidate candidate2 = new PoliticalCandidate( "Jefferson", "Thomas", dob, moneyRaised );

System.out.println(candidate1.compareTo(candidate2));      输出:0
System.out.println(candidate1.equals(candidate2));           输出:true

使用ArrayUtils.toMap()从二维数组(Object [] [])创建一个Map,我感觉这样做没有什么意义,不如直接用put,但是可以将数组转换成map。
Object[] weightArray =  new Object[][] { {"H" , new Double(1.007)},{"He", new Double( 4.002)}}
Map<String,Double> weights = ArrayUtils.toMap( weightArray );

时间用FastDateFormat,SimpleDateFormat会有线程安全的问题,日期格式可以参考博客:https://www.cnblogs.com/loveyakamoz/archive/2011/08/18/2145047.html
Date now = new Date( );
FastDateFormat fa = FastDateFormat.getInstance("yyyy年MM月dd日 HH时mm分ss秒");
System.out.println(fa.format(now));

对于DateUtils.round(),相当于四舍五入到年月日或时分秒等
Calendar.MILLISECOND
Calendar.SECOND
Calendar.MINUTE
Calendar.HOUR_OF_DAY and Calendar.HOUR
Calendar.DATE, Calendar.DAY_OF_MONTH, and Calendar.AM_PM
Calendar.MONTH
DateUtils.SEMI_MONTH
Calendar.YEAR
Calendar.ERA

FastDateFormat dtFormat = FastDateFormat.getInstance("yyyy年MM月dd日 HH时mm分ss秒");
  Date now = new Date( );
  Date nearestHour = DateUtils.round( now, Calendar.HOUR );
  Date nearestDay = DateUtils.round( now, Calendar.DAY_OF_MONTH );
  Date nearestYear = DateUtils.round( now, Calendar.YEAR );
  Date nearestMinute = DateUtils.round( now, Calendar.MINUTE );
  Date nearestSECOND = DateUtils.round( now, Calendar.SECOND);
  Date nearestMonth = DateUtils.round( now, Calendar.MONTH);

  System.out.println( "Now: " + dtFormat.format( now ) );
  System.out.println( "Nearest Year: " + dtFormat.format( nearestYear ) );
  System.out.println( "Nearest month: " + dtFormat.format( nearestMonth ) );
  System.out.println( "Nearest Day: " + dtFormat.format( nearestDay ) );
  System.out.println( "Nearest Hour: " + dtFormat.format( nearestHour ) );
  System.out.println( "Nearest minute: " + dtFormat.format( nearestMinute ) );
  System.out.println( "Nearest second: " + dtFormat.format( nearestSECOND ) );
  输出结果:
  Now: 2018年05月10日 16时31分42秒
  Nearest Year: 2018年01月01日 00时00分00秒
  Nearest month: 2018年05月01日 00时00分00秒
  Nearest Day: 2018年05月11日 00时00分00秒
  Nearest Hour: 2018年05月10日 17时00分00秒
  Nearest minute: 2018年05月10日 16时32分00秒
  Nearest second: 2018年05月10日 16时31分42秒
  
  使用DateUtils.truncate()方法截取到年月日等
  
  Date truncatedMonth = DateUtils.truncate(now, Calendar.MONTH);
  Date truncatedHour = DateUtils.truncate(now, Calendar.HOUR);

  System.out.println("Now: " + dtFormat.format(now));
  System.out.println("Truncated Month: " + dtFormat.format(truncatedMonth));
  System.out.println("Truncated Hour: " + dtFormat.format(truncatedHour));
  输出结果:
  Now: 2018年05月10日 16时46分55秒
  Truncated Month: 2018年05月01日 00时00分00秒
  Truncated Hour: 2018年05月10日 16时00分00秒

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值