4 回答

TA貢獻(xiàn)1811條經(jīng)驗(yàn) 獲得超5個(gè)贊
subEntityList這是一些棘手的代碼,如果我想這樣做,我會(huì)從中刪除所有代碼baseEntityList
,或者如果你想在兩個(gè)列表中找到差異,你可以為他們兩個(gè)做
var diffWithBase = subEntityList.removeAll(baseEntityList);
var diffWithSubList = baseEntityList.removeAll(subEntityList);

TA貢獻(xiàn)1802條經(jīng)驗(yàn) 獲得超5個(gè)贊
你可以嘗試oldschool Java方式
List<BrandEntity> diff = new ArrayList<>(baseEntityList);
difference.removeAll(subEntityList);
return diff;

TA貢獻(xiàn)1794條經(jīng)驗(yàn) 獲得超8個(gè)贊
那么你正在做的是根據(jù)它們的引用相等性來比較字符串 - 如對(duì)象(如下)中所示。但是您需要比較它們的價(jià)值是否相等,例如brandName.equals(that.brandName)
。
public static boolean equals(Object a, Object b) { return (a == b) || (a != null && a.equals(b)); }
盡管如此,我寧愿使用現(xiàn)有的庫(kù)來比較列表,例如 Apache 的 commons CollectionUtils
:
CollectionUtils.removeAll(List<T> baseBrandList, List<T> subBrandList);

TA貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超4個(gè)贊
List<BrandEntity> findDifferenceList(List<BrandEntity> list1, List<BrandEntity> list2) { return list1.stream().filter(i -> !list2.contains(i)) .concat(list2.stream.filter(i -> !list1.contains(i)) .collect(Collectors.toList()); }
你需要做你在兩個(gè)方向上所做的事情;)。什么不在 A 和 B 中,什么不在 B 和 A 中。
添加回答
舉報(bào)