集合常用算法

发布时间 2023-06-08 00:06:55作者: 黄河大道东
<dependency>
    <groupId>org.apache.commons</groupId>
    <artifactId>commons-collections4</artifactId>
    <version>4.4</version>
</dependency>

示例

import org.apache.commons.collections4.CollectionUtils;

import java.util.Arrays;
import java.util.List;

/**
 * 测试入口
 */
public class Test {
    public static void main(String[] args) {
        List<Integer> a = Arrays.asList(1, 2, 3);
        List<Integer> b = Arrays.asList(1, 2, 3);
        Object[] c = {1, 2, 3, 4, 5};
        // 计算交集
        System.out.println(CollectionUtils.intersection(a, b));
        System.out.println(CollectionUtils.retainAll(a, b));

        // 计算差集 (a - b) + (b - a) 的结果
        System.out.println(CollectionUtils.disjunction(a, b));
        // 计算差集 a - b 的结果
        System.out.println(CollectionUtils.removeAll(a, b));
        System.out.println(CollectionUtils.subtract(a, b));

        // 计算并集 a + b 不去重的结果
        System.out.println(CollectionUtils.collate(a, b));
        // 计算并集 a + b 去重,排序后的结果
        System.out.println(CollectionUtils.union(a, b));

        // 计算元素次数映射
        System.out.println(CollectionUtils.getCardinalityMap(a));

        // 计算所有排列组合种类
        System.out.println(CollectionUtils.permutations(a));

        // 翻转数组
        CollectionUtils.reverseArray(c);
        System.out.println(c);

        // 判断 两集合分别 数量 + 元素种类 都相同 则为 真
        System.out.println(CollectionUtils.isEqualCollection(a, b));
        // 判断 都不去重 b > a 则为 真
        System.out.println(CollectionUtils.isProperSubCollection(a, b));
        // 判断 都不去重 b >= a 则为 真
        System.out.println(CollectionUtils.isSubCollection(a, b));
        // 判断 分别去重 a > b 则为 真
        System.out.println(CollectionUtils.containsAll(a, b));
        // 判断 在 a 中存在任意一个 b 中的元素 则为 真
        System.out.println(CollectionUtils.containsAny(a, b));
    }
}