对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))
    

你可能感兴趣的:(C++,c,正则表达式,C#,J#)