java第三方类库commons-lang下载和常用方法

今天学习了 commons-lang的一些常用方法,进行了一下简单的记录。

目录

一、ArrayUtils

二、StringUtils

三、CollectionUtils

四、FileUtils


首先是下载:

我是直接用maven注入依赖,在pom.xml中加入这个

    <dependency>
        <groupId>commons-lang</groupId>
        <artifactId>commons-lang</artifactId>
        <version>2.6</version>
    </dependency>

一、ArrayUtils

 add(array, element):添加元素,在尾部追加

并不是在原数组添加,而是返回一个新的数组。

原因:有的项目很大,并不是一个人在写 ,可能同事把数组改了,还按原来的写,就会出现问题,但是项目太大了根本找不到同事在哪改了数组……emmm

        String[] array1 = { "a", "b", "c", "d", "e", };
        String[] array2 = (String[]) ArrayUtils.add(array1, "tom");
        System.out.println(ArrayUtils.toString(array1));
        System.out.println(ArrayUtils.toString(array2));

 clone(array1):拷贝数组

重点:浅拷贝——>只拷贝引用

        Student s1 = new Student("tom", 15);
        Student s2 = new Student("nanxi", 27);

        Student[] array1 = { s1, s2 };
        Student[] array2 = (Student[]) ArrayUtils.clone(array1);

        System.out.println(array1[0].getName());
        System.out.println(array2[0].getName());

        array1[0].setName("tom1");
        System.out.println(array1[0].getName());
        System.out.println(array2[0].getName());

 subarray(array1, a, b):截取数组

从下标为a的元素(包含)开始,到下标为b的元素(不包含)结束

reverse(array1):翻转数组

无返回值,对原始数组修改。慎用!

indexOf(array1, element):从头开始查找元素

返回第一个被找到的元素的下标

没找到,返回-1

lastIndexOf(array1, element):返回元素最后出现的位置下标

没找到,返回-1

remove(array, index):移除指定位置的元素

返回新数组

removeElement(array, element):移除指定元素

返回新数组

removeElement 方法, 匹配原理
通过元素的 equals 方法判断两个元素是否匹配
Java 中所有类继承自 Object
Object equals 方法是通过  ==  实现
个别类型的类,重写了 equels 方法,比如 String
 

List Array的相互转换:

ListArray :

List<Student> list = new ArrayList<Student>();
list.toArray();

ArrayList:

Arrays.asList(array);

 

二、StringUtils

equals(s1, s2):判断两个字符串是佛相等

查看StringUtils的equals的源码,重写了equals方法,可以规避空指针问题

        //查询两个字符串是否相等
        String s1 = "tom";
        String s2 = new String("tom");

        System.out.println(StringUtils.equals(s1, s2));//可以规避空指针问题

 isEmpty(s)、isBlank(s):字符串判空

isBlank()通过size判空,空格也算内容

        //是否为空
        String ss1 = " ";
        String ss2 = null;
        String ss3 = "";

        System.out.println(StringUtils.isEmpty(ss1));
        System.out.println(StringUtils.isBlank(ss1));//false
        System.out.println(StringUtils.isEmpty(ss2));
        System.out.println(StringUtils.isBlank(ss2));
        System.out.println(StringUtils.isEmpty(ss3));
        System.out.println(StringUtils.isBlank(ss3));

 strip(s, str)     stripStart(s, str) stripEnd(s, str)  :移除指定字符串

Strip移除两端的str

stripStart移除开头的str

stripEnd移除结尾的str

        //去头去尾
        String ss = "##tom##";
        System.out.println(StringUtils.strip(ss, "#"));
        //去前缀
        System.out.println(StringUtils.stripStart(ss, "#"));
        //去后缀
        System.out.println(StringUtils.stripEnd(ss, "#"));

        System.out.println(StringUtils.stripEnd("abc  ", null));
        System.out.println(StringUtils.stripEnd(" abc ", null));//null也可以去除空格
        System.out.println(StringUtils.stripStart(" abc ", null));
        System.out.println(StringUtils.stripEnd("  abcyx", "xyz"));//只要是这些都会被删除,不管有几个,不管出现顺序(只删除后缀,遇见一个不是的就不是后缀了)
        System.out.println(StringUtils.stripEnd("  abcyyx", "xyz"));
        System.out.println(StringUtils.stripEnd("120.00", ".0"));

substringBetween(str,start,end):截取字符串,按照指定的字符串截取

        //截取字符串(求子串)
        String str = "abc-123-edg";
        System.out.println(StringUtils.substringBetween(str, "abc", "edg"));//-123-

        String str2 = "abc-123-edgabc888efg";
        //截至子串中第一个出现的edg
        System.out.println(StringUtils.substringBetween(str2, "abc", "edg"));//-123-

join(array, ";"):拼接字符串,按照指定的字符 

        //拼接字符串
        String[] s11=new String[]{"ronghua","shige","shuai","ge"};
        String s = StringUtils.join(s11, " ");//ronghua shige shuai ge
        System.out.println(s);


        String s22 = StringUtils.join(new String[] { "test", null, "", "a" },';');//test;;;a

        System.out.println(s22);

三、CollectionUtils

集合的一些方法。

注入依赖:

    <dependency>
        <groupId>commons-collections</groupId>
        <artifactId>commons-collections</artifactId>
        <version>3.2.2</version>
    </dependency>

 isEmpty(list):判断集合是否为空

        List<String> list1 = new ArrayList<String>();
        list1.add("a");

        System.out.println(CollectionUtils.isEmpty(list1));//flase

        List<String> list2 = new ArrayList<String>();
        System.out.println(CollectionUtils.isEmpty(list2));//true

        //判断是不是空:通过大小判断,加入null也不是空
        List<String> list3 = new ArrayList<String>();
        list3.add(null);
        System.out.println(CollectionUtils.isEmpty(list3));//flase

        List<String> list4 = new ArrayList<String>();
        System.out.println(CollectionUtils.isEmpty(list4));//true

       

 union(list1,list2):求两个集合的并集,会去重,不会再原有数组上进行更改,返回一个类型Collection为的对象。

该对象不能直接通过下标进行操作,可以强制类转。

        //求并集
        List<String> l1 = (List<String>) CollectionUtils.union(list5, list6);
        System.out.println(CollectionUtils.union(list5, list6));//[a, A, b, c]
        Object[] array = (Object[]) l1.toArray();
        System.out.println(ArrayUtils.toString(array));//{a,A,b,c}

 intersection(list1,list2):求两个集合的交集。返回一个Collection对象。

试了试null,也能够被算作交集元素,不会有空指针问题。

        //求交集
        List<String> l2 = (List<String>) CollectionUtils. intersection(list5, list6);
        Object[] array1 = (Object[]) l2.toArray();
        System.out.println(ArrayUtils.toString(array1));//{b,c}
        list6.set(2,null);
        list5.set(2,null);
        List<String> l3 = (List<String>) CollectionUtils. intersection(list5, list6);
        Object[] array2 = (Object[]) l3.toArray();
        System.out.println(ArrayUtils.toString(array2));//{<null>,b}

copy(list2, list1):拷贝list1的元素到list2

该方法为浅拷贝(只拷贝引用不会在内存中重新创建一个对象),并且list2size必须大于等于list1

        Student stu1 = new Student("tom1", "15","male");
        Student stu2 = new Student("tom2", "14","male");
        Student stu3 = new Student("tom3", "13","male");
        Student stu4 = new Student("tom4", "12","male");

        //复制
        List<Student> list8 = new ArrayList<Student>();
        list8.add(stu1);

        List<Student> list9 = new ArrayList<Student>();
        list9.add(stu2);
        list9.add(stu3);

        //把8复制到9,要求目的数组要比源数组长
        Collections.copy(list9, list8);
        for (Student student : list9) {
            System.out.print(student.getName()+"  ");//tom1  tom3
        }
        System.out.println();
        stu1.setName("lily");
        for (Student student : list9) {
            System.out.print(student.getName()+"  ");//lily  tom3
        }
        System.out.println();

 sort(list, comparator):list排序,需要自定义比较器。

该方法比较重要。

        //排序
        List<Student> list7 = new ArrayList<Student>();
        list7.add(stu1);
        list7.add(stu2);
        list7.add(stu3);
        list7.add(stu4);

        Collections.sort(list7, new StudentComparator());
        for (int i = 0; i < list7.size(); i++) {
            Student stu = list7.get(i);
            System.out.print(stu.getName()+"  ");//tom4  tom3  tom2  lily
        }
        System.out.println();

自定义的比较器:比较器应该有三个返回值 1、-1和0;如果返回1,sort方法会改变集合中数据的顺序。否则不然。

import java.util.Comparator;

public class StudentComparator implements Comparator<Student> {
    public int compare(Student o1, Student o2) {
        Integer age1 = Integer.parseInt(o1.getAge());
        Integer age2 = Integer.parseInt(o2.getAge());
        if (age1 == age2) {
            return 0;
        } else if (age1 > age2) {
            return 1;
        } else {
            return -1;
        }
    }


}

 被比较的类定义:

public class Student {
    private String name;
    private  String age;
    private String sex;

    public Student(String name, String age, String sex) {
        this.name = name;
        this.age = age;
        this.sex = sex;
    }
}

四、FileUtils

注入依赖:

    <dependency>
        <groupId>commons-io</groupId>
        <artifactId>commons-io</artifactId>
        <version>2.6</version>
    </dependency>

 deleteDirectory(file):删除文件夹

不存在不报错   不是文件夹,会报错;

         //删除文件夹
        //不存在不报错
        //不是文件夹,会报错;
        File file2 = new File("e:/testFile/t8");//不存在
        FileUtils.deleteDirectory(file2);

        File file1 = new File("e:/testFile/t1/t1.txt");//非文件夹
        FileUtils.deleteDirectory(file1);

 deleteQuietly(file):删除文件夹、文件

不存在,返回false

        File file1 = new File("e:/testFile/t8/t1.txt");//不存在
        System.out.println(FileUtils.deleteQuietly(file1));

        File file2 = new File("e:/testFile/t3");//非文件
        System.out.println(FileUtils.deleteQuietly(file2));

        File file3 = new File("e:/testFile/t1/t1.txt");//存在
        System.out.println(FileUtils.deleteQuietly(file3));

 cleanDirectory(file):清空文件夹

不存在,报错

非文件夹,报错

copyFileToDirectory(file,file):将文件拷贝到指定目录

目录不存在,创建

 

  • 5
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值