java 对比两个list获取增加的数据和减少的数据

因为在项目中用到了关于对比两个list中的数据获得输入元素和原数据中增加的和减少的数据,从而找到工具类如下:

public class CompareList {
/**
 * @param aList 本列表
 * @param bList 对照列表
 * @return 返回增加的元素组成的列表
 * @Description: 计算列表aList相对于bList的增加的情况,兼容任何类型元素的列表数据结构
 */
public static  List getAddaListThanbList(List aList, List bList) {
    List addList = new ArrayList();
    for (int i = 0; i < aList.size(); i++) {
        if (!myListContains(bList, aList.get(i))) {
            addList.add(aList.get(i));
        }
    }
    return addList;
}

 /**
 * @param aList 本列表
 * @param bList 对照列表
 * @return 返回减少的元素组成的列表
 * @Description: 计算列表aList相对于bList的减少的情况,兼容任何类型元素的列表数据结构
 */
public static  List getReduceaListThanbList(List aList, List bList) {
    List reduceaList = new ArrayList();
    for (int i = 0; i < bList.size(); i++) {
        if (!myListContains(aList, bList.get(i))) {
            reduceaList.add(bList.get(i));
        }
    }
    return reduceaList;
}


/**
 * @param sourceList 源列表
 * @param element    待判断的包含元素
 * @return 包含返回 true,不包含返回 false
 * @Description: 判断元素element是否是sourceList列表中的一个子元素
 */
private static  boolean myListContains(List sourceList, E element) {
    if (sourceList == null || element == null) {
        return false;
    }
    if (sourceList.isEmpty()) {
        return false;
    }
    for (E tip : sourceList) {
        if (element.equals(tip)) {
            return true;
        }
    }
    return false;
}

/**
 * @param list
 * @return list
 * @Description: 去除list重复数据
 */
public static  List cleanDisRepet(List list) {
    HashSet h = new HashSet(list);
    list.clear();
    list.addAll(h);
    return list;
}

你可能感兴趣的:(Java)