public static List<?> mergeDistinctList(List<?> sourceList1, List<?> sourceList2,
BiPredicate<Object, Object> biPredicate) {
if (sourceList1 != null && sourceList2 != null) {
List<Object> result = new ArrayList<>(20);
List<Object> resultcob = new ArrayList<>(20);
result.addAll(sourceList1);
for (Object obj : sourceList2) {
boolean flag = true;
for (Object soObject : result) {
if (biPredicate.test(obj, soObject)) {
flag = false;
break;
}
}
if (flag) {
resultcob.add(obj);
}
}
result.addAll(resultcob);
return result;
} else if (sourceList1 != null) {
return sourceList1;
} else {
return sourceList2;
}
}