2017年4月25日 星期二

CompareCollectionUtil

使用CompareCollectionUtil有個大前提

Collection內的Class必須實作 hashCode 和 equal
因為原理是使用equal這個方法在比較

public class CompareCollectionUtil {
    /**
     * a = [1, 2, 3]    b = [2, 3, 4]
* 比對兩個List 用 a 去跟 b 比較,回傳缺少的部分
* return [1] **/ public static <T> List<T> deleted(Collection<T> a, Collection<T> b) { if(a == null){ return new ArrayList<T>(); } List<T> result = new ArrayList<T>(a); if(b != null){ result.removeAll(b); } return result; } /** * a = [1, 2, 3] b = [2, 3, 4]
* 比對兩個List 用 a 去跟 b 比較,回傳相同的部分
* return [2, 3] **/ public static <T> List<T> retained(Collection<T> a, Collection<T> b) { if(a == null || b == null){ return new ArrayList<T>(); } List<T> result = new ArrayList<T>(a); result.retainAll(b); return result; } /** * a = [1, 2, 3] b = [2, 3, 4]
* 比對兩個List 用 a 去跟 b 比較,回傳多的部分
* return [4] **/ public static <T> List<T> added(Collection<T> a, Collection<T> b) { return deleted(b, a); } /** * a = [1, 2, 3] b = [2, 3, 4]
* 比對兩個List 用 a 去跟 b 比較,回傳不同的部分
* return [1, 4] **/ public static <T> List<T> different(Collection<T> a, Collection<T> b){ List<T> list = new ArrayList<T>(); list.addAll(added(a, b)); list.addAll(deleted(a, b)); return list; } }

沒有留言:

張貼留言