package com.youchain.utils;

import java.util.HashSet;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;

public class SmartStringUtil {
    /**
     * 获取两个列表的相同的元素
     *
     * @param list1 第一个列表
     * @param list2 第二个列表
     * @return 相同元素
     */
    public static List<String> getIntersection(List<String> list1, List<String> list2) {
        return list1.stream()
                .filter(list2::contains)
                .collect(Collectors.toList());
    }

    /**
     * 找到 list1 中存在但 list2 中不存在的元素
     *
     * @param list1 第一个列表
     * @param list2 第二个列表
     * @return 不同
     */
    public static List<String> getDifference(List<String> list1, List<String> list2) {
        Set<String> existingLocationCodesSet = new HashSet<>(list2);
        return list1.stream()
                .filter(code -> !existingLocationCodesSet.contains(code))
                .collect(Collectors.toList());
    }

    public static boolean containsAllIgnoreCase(List<String> requiredColumns, List<String> headers) {
        Set<String> headersSet = new HashSet<>(headers);
        return headersSet.containsAll(requiredColumns);
    }
}
