微信上的小说网站是怎么做的,好口碑的关键词优化,现货交易平台排名,嘉定网站建设电脑培训需求:两个list中存放相同的对象,一个是页面导入,一个是从数据库查询,外部传入一个集合存放的是对象的属性名称.要求根据传入的属性(多个)判断两个list中是否有重复的对象, 如果重复则删除数据库的list, 然后合并两个list.
/*** 处理导入和数据库重复数据* param list* param l…需求:两个list中存放相同的对象,一个是页面导入,一个是从数据库查询,外部传入一个集合存放的是对象的属性名称.要求根据传入的属性(多个)判断两个list中是否有重复的对象, 如果重复则删除数据库的list, 然后合并两个list.
/*** 处理导入和数据库重复数据* param list* param listKey* return*/
default ListT processImportAndDatabaseDuplicateData(ListT list, ListString listKey) {// 获取数据库中的全部数据ListT listEntityDatabase this.list(null);// 如果数据库中的数据与提交数据有重复则删除数据库的数据listEntityDatabase.removeIf(obj2 - list.stream().anyMatch(obj1 - compareObjectsByProperties(obj1, obj2, listKey)));list.addAll(listEntityDatabase);return list;
}default boolean compareObjectsByProperties(T n, T o, ListString mappingTableKeys) {return mappingTableKeys.stream().allMatch(propertyName - {Object value1 getPropertyValue(n, propertyName);Object value2 getPropertyValue(o, propertyName);return value1 ! null value1.equals(value2);});
}default Object getPropertyValue(T item, String propertyName) {try {return item.getClass().getDeclaredMethod(get capitalize(propertyName)).invoke(item);} catch (Exception e) {e.printStackTrace();}return null;
}default String capitalize(String str) {if (str null || str.isEmpty()) {return str;}return Character.toUpperCase(str.charAt(0)) str.substring(1);
}