`
GeassLei
  • 浏览: 4254 次
  • 性别: Icon_minigender_1
  • 来自: 北京
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

对common-lang包的分析(11.30更新)

阅读更多
为了锻炼自己看代码能力,也为了学习一些优秀的代码,从今天开始,对一些常用类的使用方法进行编写。
今天的主角是commons-lang包下的几个常用类
1.ArrayUtils
    ArrayUtils的API里写到,这个类是用来操作数据,原始类型数据(如int[] a)和包装类的数据(如 Integer[] a)。这个类中所有的方法都不会抛出异常,不管里你向方法传入一个null类型,还是数组里含有对null的引用。
    这个类中定义了一些空的数组(包括对象,字符串,基本类型和包装类型),长度为0
    以下方法除非特殊说时,均有对对象,八种基本类型的处理
    add(Object[],Object)方法,该方法是向原有的数据里增加一个元素,其实现的内部采用了产生一个比原数组长度大1的数组,把数据拷贝到新数组中,在最后一个位置加上要加入的元素,如果是向一个null,或一个空数组里增加数据,会自动产生一个与之对应的数组。
   
    ArrayUtils.add(null, null)      = [null]
    ArrayUtils.add(null, "a")       = ["a"]
    ArrayUtils.add(["a"], null)     = ["a", null]
    ArrayUtils.add(["a"], "b")      = ["a", "b"]
    ArrayUtils.add(["a", "b"], "c") = ["a", "b", "c"]
    

   
    add(Object[],int,Object)方法,该方法是向原有的数组时增加一个元素并填充到指定的位置
   
    ArrayUtils.add(null, 0, null)      = [null]
    ArrayUtils.add(null, 0, "a")       = ["a"]
    ArrayUtils.add(["a"], 1, null)     = ["a", null]
    ArrayUtils.add(["a"], 1, "b")      = ["a", "b"]
    ArrayUtils.add(["a", "b"], 3, "c") = ["a", "b", "c"]
    

    addAll(Object[],Object[]),返回两个数组合并的新数组
   
    ArrayUtils.addAll(array1, null)   = 实现对数组array1的克隆
    ArrayUtils.addAll(null, array2)   = 实现对数组array2的克隆
    ArrayUtils.addAll([], [])         = []
    

    clone(Object[])   //实现对数组的克隆,其内部实现机制是调用了数组本身的clone方法
    indexOf(Object[],Object,int)//查看数组里从int位置开始的Object所在的位置,如果没有找到就返回 INDEX_NOT_FOUND(=-1) 这个值其它的indexOf(Object[],Object)和contains(Object[],Object)//两个方法都是依赖于这个函数
    lastIndexOf(Object[],Object,int)//在数组的int位置向前查找数组里是否包含Object对象
    isEmpty(Object[])//查看数组是否为空
    isSameLength(Object[],Object[])///查看两个数据的长度是否相同
    remove(Object[],int)//移除数组里的第int个元素
    removeElement(Object[],Obect)//移除数组里的Object元素
    clone(Object[])//克隆Object数组
    subarray(Object[],int i,int j)//得到数组Object里的第i到j位置的子数组
    toMap(Object[] array)//将array数组转化为Map类型,array为Object[]类型或Map.Entry类型才行
    toObject(int[])和toPrimitive(Integer[])//正好相反,是原始数据类型与包装类型之间的转换


2.BooleanUtils类
    该类封闭了对bool值的常用操作,包括Boolean类与原始数据类型,及其它包装类之间的转换,与ArrayUtils类相同,该类也以优雅的方式处理null类型
    isFalse(Boolean)    判断是否为假
    isTrue(Boolean)     判断是否为真
    negate(Boolean)     对参数进行否定运算
    isNotFalse(Boolean) 判断是否不为假
    isNotTrue(Boolean)  判断是否不为真
    xor(Boolean[]),xor(boolean[])对数组内的元素进行异或运算
    toBoolean(...)      转换为boolean
    toBooleanObject(...)转换为Boolean类
        这两个方法大至相同,关于其参数有两种,一种是单一参数,不同的数据类型,其处理方法不太相同,处理方法如下:
            int     0-->false,其它-->true
            boolean false-->false,true-->true
            String  yes,y,on,true-->true,其它-->false(不区分大小写)在处理不同的字符串时,性能上会不大相同,推荐大家使用true和false来使用
         针对三个参数的情况,意思是将指定的参数按指定的规则来转化为boolean或Boolean类型,要转化的参数为第一个参数,如果第一个参数与第二个参数相同就会返回true,与第三个参数相同就会返回false,否则的话就会抛出一个异常
         其它如:toInteger,toIntergerObject,toString,toStringOnOff,toStringTrue,toStringYesNo与些处理


3.CharEncoding
    里面定义了六个字符常量,这几个常量均为JAVA平台所支持的编码方式,他们是:ISO_8859_1,US_ASCII,UTF_16,UTF_16BE,UTF_16LE,UTF_8
    方法isSupported(String)来测试所传入的编码方法java是否支持
4.CharRange
    字符范围类,该类的实例是不可变的类
    用来一个字符串范围。
   
        CharRange(char)     //单字符
        CharRange(char,boolean) //不在该字符范围
        CharRange(char start,char end)    //指一个从start到end的字符串范围
        CharRange(char start,char end,boolean negated)  //negated指定是否在前面start到end的字符串范围
        contains(char)      //判断是否在包含指定的字符
        contains(CharRange) //判断是否包含指定的字符范围
        getStart(),getEnd() //得到字符范围开始和结束位置
        isNegated()         //判断字条范围是否是否定的
    


5.CharSet
    字符集合类,注意该类的实例是一个不可变的。
    该类的实现原理是内部使用一个HashMap来包含所有的范围
    该类内部定义了一些字符集合常量,如下:
   
        EMPTY   //空集合
        ASCII_ALPHA     //a-zA-Z
        ASCII_ALPHA_LOWER   //a-z
        ASCII_ALPHA_UPPER   //A-Z
        ASCII_NUMRIC        //0-9
        getInstance(String) //得到一个CharSet的实例,string接受如下字符串
               /*   ^a-e
                *   a-e
                *   ^a
                *   a
                *   abe-gx-z
                *   与正则表达式很像,不明白的同学可以去看下正则
                */
        getInstance(String[])//通过一个字符数组来得到一个实例
        contains(char)      //是否包含字符
        getCharRanges()     //返回一个该CharSet所有包含的字符,返回值为CharRange[]类型

    


6.CharSetUtils类
    CharSet的辅助类,该类包含以下方法
   
        evaluateSet(String[] set)   //返回一个CharSet类,与CharSet.getInstance(String[])函数相同
        squeeze(String str,String set)  //去掉str中,重复的字符(该字符由set来指定)
        count(String str,String set)    //计算str中,包含set中字符的个数
        count(String str,String[] set)  //同上
        keep(String str,String set)     //只保留str字符串中在set中出现的字符串
        keep(String str,String[] set)   //同上
        delete(String str,String set)   //删除str字符串中在set串中出现的字符
        delete(String str,String[] set) //同上
        translate(String str,String searchChars,replaceChars)   //将str字符串出现在searchChars中的字符替换成replaceChars(不过这个方法已经过时了,建议使用StringUtils.replaceChars(String,String,String))
    

0
0
分享到:
评论

相关推荐

    Borehole Stability Analysis in a Thermo-Poro-Elastic11.30.21.pdf

    在《Borehole Stability Analysis in a Thermoporoelastic Dual-Porosity Medium》这篇论文中,作者Rachel Gelet、Benjamin Loret和Nasser Khalili深入探讨了在热弹性双孔介质中钻孔稳定性分析的问题。该研究以一个...

    secure-boot-image-authentication-11.30.16

    Secure Boot and Image Authentication Technical Overview Secure Boot是一种boot sequence,确保每个软件镜像在执行前都经过身份验证,以防止未经授权或修改的代码的运行。我们的信任链是根据这个定义建立的,...

    3层独栋别墅效果图cad图纸D003-三层-10.50&11.30米-.zip

    本户型为3层独栋别墅,占地面积129.15平方米,总建筑面积356.0平米,建筑高度9.6米,总建筑高度12.0米。一层设有客厅、卧室、卫生间、餐厅、厨房、工人房、车库;二层设有客厅、4间卧室、2间卫生间;...

    11.1-11.30韵达快递单号.xlsx

    11.1-11.30韵达快递单号.xlsx

    知识点-11.30.xmind

    整理的一些网络相关的知识点

    DynamicSkinForm v11.30 Cracked for CB5-CB2010 D5-D2010

    本篇将深入探讨DynamicSkinForm v11.30的特性、应用以及其对CB5到CB2010及D5到D2010版本的支持。 首先,DynamicSkinForm的核心功能是提供动态皮肤机制,这意味着开发者可以轻松地更改应用程序的外观和感觉,无需...

    SQLyog v11.30 x86-x64

    SQLyog MySQL GUI Tools v11.30 x86 and x64 version

    WORD必备工具箱_v11.30(2007+)

    《Word必备工具箱_v11.30(2007+):提升Word处理效率的神器》 在日常办公中,Microsoft Word是我们处理文档的主要工具,无论是撰写报告、编辑简历还是制作复杂的表格,它都能胜任。然而,尽管Word功能强大,但其内置...

    Modelmaker tool pascal edition 11.30

    Modelmaker tool Pascal edition 11.30是一款专为Delphi编程环境设计的强大建模工具,特别强调对Xe3版本的支持。这款工具以其高效、易用的特性,成为Delphi开发者们提升生产力的重要伙伴。 在Delphi的开发世界中,...

    youhou11.30.zip

    "youhou11.30.zip" 文件可能是一个包含更新版本的油猴脚本或者是一些定制的用户脚本集合。在解压后,用户需要将其中的.js文件导入到油猴插件中,以便在手机浏览器上使用。导入过程通常包括以下步骤: 1. 首先,确保...

    旺旺买家版11.30

    阿里旺旺买家版11.30 官方已经停止下载,绝版下载程序 共分享

    第五届中国教育创新年会11.29-11.30论坛发言.rar

    附件为第五届中国教育创新年会有关STEAM科创教育发言人电子资源:6)学校是如何进化以赋能于人; 5)技术在如何实现人机互补; 4)组织该怎样最终赢得人心;3)校长凭什么成就学校; 2)学生为什么会喜欢学习;...

    Registry Winner v6.1.11.30

    **Registry Winner v6.1.11.30:注册表优化与系统工具详解** 注册表是Windows操作系统的核心组成部分,存储着系统和应用程序的各种配置信息。随着时间的推移,注册表可能会积累大量的冗余、错误或无效条目,这可能...

    Process Explorer v11.30汉化版

    系统辅助任务管理器Process Explorer v11.30汉化版 可以查看所连接的服务或文件 可替换系统本身的任务管理器,不需安装,直接解压即可。

    理财管家 2014 v11.30 专业版.zip

    理财管家系列软件将“简单易用”的设计理念发挥到极致,使用本软件您无需专业电脑知识,会汉字输入就能全面掌握;特有的自动记忆功能使您...理财管家 2014 v11.30 专业版更新: 更新生产加工模块,细分材料成品进出库

    实验七 11.30 000000000000000000000000000

    1111111111111112222222222222

    WinDriver11.30_64

    Windows 7 64位 驱动程序开发工具。

    2019年教师资格考试每日一练11.30.pdf

    2019年教师资格考试每日一练11.30.pdf

    ModelMaker.Pascal.11.30.with.Crack.rar

    ModelMaker.Pascal.11.30.with.Crack.rar

Global site tag (gtag.js) - Google Analytics