Java工具类 Apache Commons:commons-lang 3.0.1 发布

fmms 13年前
     <p>commons-lang是一个很有用的开源包,它弥补了Java API在提供的基本处理方法上的不足。从它的命名上就可以看出它主要是一些公共的工具集合,比如对字符、数组的操作等等。它封装了很多Java具体的操作,也就是如果要实现某功能需要你自己写的代码,它都替你封装好,你只需调用它的方法就行了。<br /> </p>    <p>Apache Commons 团队刚发布了 Commons Lang 3.0.1. 包含了9个改变和修复了6个bug。详情请看:<a href="/misc/goto?guid=4958184198158914899" target="_blank">https://commons.apache.org/lang/changes-report.html#a3.0.1</a></p>    <p>下载地址:<a href="/misc/goto?guid=4958184198898492184" target="_blank">http://commons.apache.org/lang/download_lang.cgi</a></p>    <p>下面弄几个简单的例子:</p>    <p><strong>1</strong><strong>、合并两个数组: org.apache.commons.lang. ArrayUtils</strong></p>    <p>有时我们需要将两个数组合并为一个数组,用ArrayUtils就非常方便,示例如下:</p>    <pre class="brush:java; toolbar: true; auto-links: false;">private static void testArr(){    String[] s1 = new String[]{"1","2","3"};    String[] s2 = new String[]{"a","b","c"};    String[] s = (String[])ArrayUtils.addAll(s1,s2);    for (int i=0;i<s.length;i++){    System.out.println(s[i]);    }    String str = ArrayUtils.toString(s);    str = str.substring(1,str.length()-1);    System.out.println(str+">>"+str.length());    }</pre>    <p>从ArrayUtils.<em>addAll</em>的源码中也可以看到,它其实用了System.arraycopy来进行合并处理。</p>    <p><strong>2</strong><strong>、随机数的生成</strong></p>    <p>随机数我们知道用Random就成,但如果我们不进行封装的话,恐怕每次都要至少写2行代码才行,但commons-lang却替你封装好了,每次生成随机数,只需像如下这样调用即可:</p>    <p>RandomUtils.nextInt()</p>    <p>只需一行。</p>    <p><strong>3</strong><strong>、对字符串根据符号来切分</strong></p>    <p>假设有这样一个字符串</p>    <p>String str = “abc,haha,故乡,账号”;</p>    <p>现在对其按“,”来进行分割,得到每一个分割后的词,通常我们都会这么写:</p>    <pre class="brush:java; toolbar: true; auto-links: false;">String[] strArr = str.split(",");    for (String s : strArr){    System.out.println(s);    }</pre>    <p>但commons-lang真是热心,它对此也进行了处理,如下:<br /> </p>    <pre class="brush:java; toolbar: true; auto-links: false;">StrTokenizer strTokenizer = StrTokenizer.getTSVInstance(str);    strTokenizer.setDelimiterChar(',');//表示按,来进行分割    while(strTokenizer.hasNext()){    System.out.println(strTokenizer.next());    }</pre>    <p>在StrTokenizer采用了Iterator模式来进行,两者虽然代码量相差无几,但我觉得</p>    <p>commons-lang处理得要更好,最起码采用的设计模式思想让事情变得更加简洁,不是吗?</p>    <p>上面三个只是commons-lang中的九牛一毛,只是让大家对commons-lang有个大概的印象和了解,要想了解掌握更多的使用功能,就只能自己去研究研究了,好在commons-lang有源码且代码也很容易理解。 </p>