CollectionUtils工具類的一些方法介紹


  在有了java8,List的操作更加多樣化,但是關於這個工具類,還是很好用。今天遇到一個兩個集合的比較方法,不是很熟。剛好,對這個工具類的常見方法做一些梳理。

  在網上看了,都是相同的程序,驗證了一下,沒有問題,學習了,並記錄,沒有進行新的程序書寫。

  感覺這些知識點夠用了。

 1.引入依賴

<dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-collections4</artifactId>
            <version>4.1</version>
        </dependency>

  

2.並集

    /**
     * 2個數組取並集
     * [A, B, C, D, E, F, G, H, K]
     */
    @Test
    public void testUnion(){
        String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };
        String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };
        List<String> listA = Arrays.asList(arrayA);
        List<String> listB = Arrays.asList(arrayB);
        System.out.println(CollectionUtils.union(listA, listB));
    }

  

3.交集

    /**
     * 2個數組取交集
     * [B, D, F]
     */
    @Test
    public void testIntersection(){
        String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };
        String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };
        List<String> listA = Arrays.asList(arrayA);
        List<String> listB = Arrays.asList(arrayB);
        System.out.println(CollectionUtils.intersection(listA, listB));
    }

  

4.交集的補集

    /**
     * 交集的補集(析取)
     * [A, C, E, G, H, K]
     */
    @Test
    public void testDisjunction(){
        String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };
        String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };
        List<String> listA = Arrays.asList(arrayA);
        List<String> listB = Arrays.asList(arrayB);
        System.out.println(CollectionUtils.disjunction(listA, listB));
    }

  

5.差集

    /**
     * 差集(扣除)
     * [A, C, E]
     */
    @Test
    public void testSubtract(){
        String[] arrayA = new String[] { "A", "B", "C", "D", "E", "F" };
        String[] arrayB = new String[] { "B", "D", "F", "G", "H", "K" };
        List<String> listA = Arrays.asList(arrayA);
        List<String> listB = Arrays.asList(arrayB);
        System.out.println(CollectionUtils.subtract(listA, listB));
    }

  

6.是否為空

/**
     * 是否為空
     */
    @Test
    public void testIsEmpty(){
        class Person{}
        class Girl extends Person{}
        List<Integer> first = new ArrayList<>();
        List<Integer> second = null;
        List<Person> boy = new ArrayList<>();
        //每個男孩心里都裝着一個女孩
        boy.add(new Girl());
        //判斷集合是否為空
        System.out.println(CollectionUtils.isEmpty(first));   //true
        System.out.println(CollectionUtils.isEmpty(second));   //true
        System.out.println(CollectionUtils.isEmpty(boy));   //false

        //判斷集合是否不為空
        System.out.println(CollectionUtils.isNotEmpty(first));   //false
        System.out.println(CollectionUtils.isNotEmpty(second));   //false
        System.out.println(CollectionUtils.isNotEmpty(boy));   //true
    }

  

7.是否相等

  感覺還是很實用。

    /**
     * 集合是否相等
     */
    @Test
    public void testIsEqual(){
        class Person{}
        class Girl extends Person{
        }

        List<Integer> first = new ArrayList<>();
        List<Integer> second = new ArrayList<>();
        first.add(1);
        first.add(2);
        second.add(2);
        second.add(1);
        Girl goldGirl = new Girl();
        List<Person> boy1 = new ArrayList<>();
        //每個男孩心里都裝着一個女孩
        boy1.add(new Girl());
        List<Person> boy2 = new ArrayList<>();
        //每個男孩心里都裝着一個女孩
        boy2.add(new Girl());
        //比較兩集合值
        System.out.println(CollectionUtils.isEqualCollection(first,second));   //true
        System.out.println(CollectionUtils.isEqualCollection(first,boy1));   //false
        System.out.println(CollectionUtils.isEqualCollection(boy1,boy2));   //false

        List<Person> boy3 = new ArrayList<>();
        //每個男孩心里都裝着一個女孩
        boy3.add(goldGirl);
        List<Person> boy4 = new ArrayList<>();
        boy4.add(goldGirl);
        System.out.println(CollectionUtils.isEqualCollection(boy3,boy4));   //true
    }

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM