当前位置: 首页 > news >正文

湛江模板建站软件企业网站seo营销

湛江模板建站软件,企业网站seo营销,河北省两学一做网站,电子邮箱注册网站申请支持操作: 根据指定字段,获取两个对象集合的交集、补集、并集等将对象中的多个字段值,抽取到一个List中 import java.lang.reflect.Field; import java.util.*; import java.util.concurrent.ConcurrentHashMap; import java.util.function…

支持操作:

  • 根据指定字段,获取两个对象集合的交集、补集、并集等
  • 将对象中的多个字段值,抽取到一个List中
import java.lang.reflect.Field;
import java.util.*;
import java.util.concurrent.ConcurrentHashMap;
import java.util.function.Function;
import java.util.function.Predicate;
import java.util.stream.Collectors;/*** Description:List工具类。用于处理两个列表的交集、并集、差集等操作。** @author jiangniao* @date 2024-3-22*/
public class ListUtil {private ListUtil() {}/*** 提取多个字段的值到一个list** @param list      对象集合* @param fieldName 需要提取的字段名* @return*/public static List<String> extractFieldsToList(List<?> list, String... fieldName) {return list.stream().flatMap(item->Arrays.stream(fieldName).map(field->BeanUtils.getSimpleProperty(item, field))).collect(Collectors.toList());}/*** 根据指定字段找出两个列表的交集。** @param list1* @param list2* @param fields* @param <T>* @return*/public static <T> List<T> intersection(List<T> list1, List<T> list2, String... fields) {return list1.stream().filter(item1->containsWithFields(list2, item1, fields)).collect(Collectors.toList());}/*** 根据指定字段找出两个列表的并集** @param list1* @param list2* @param fields* @param <T>* @return*/public static <T> List<T> union(List<T> list1, List<T> list2, String... fields) {List<T> union = new ArrayList<>(list1);union.addAll(list2.stream().filter(item->!containsWithFields(list1, item, fields)).collect(Collectors.toList()));return union;}/*** 根据指定字段找出两个列表的差集。list1中有,list2中没有的元素** @param list1* @param list2* @param fields* @param <T>* @return 返回list1过滤后的数据*/public static <T> List<T> difference(List<T> list1, List<T> list2, String... fields) {return list1.stream().filter(item->!containsWithFields(list2, item, fields)).collect(Collectors.toList());}/*** 找出两个列表的差集。list1中有,list2中没有的元素。* <p>用于非Object对象的比较,比如String、Integer等** @param list1* @param list2* @param <T>* @return 返回list1过滤后的数据*/public static <T> List<T> difference(List<T> list1, List<T> list2) {list1.removeAll(list2);return list1;}/*** 辅助方法,判断列表中是否包含指定对象** @param list* @param item* @param fields* @param <T>* @return*/private static <T> boolean containsWithFields(List<T> list, T item, String... fields) {return list.stream().anyMatch(item2->matchesFields(item, item2, fields));}/*** 辅助方法,判断两个对象的指定字段是否相等** @param item1* @param item2* @param fields* @param <T>* @return*/private static <T> boolean matchesFields(T item1, T item2, String... fields) {try {for (String field : fields) {Field declaredField1 = item1.getClass().getDeclaredField(field);Field declaredField2 = item2.getClass().getDeclaredField(field);declaredField1.setAccessible(true);declaredField2.setAccessible(true);if (!Objects.equals(declaredField1.get(item1), declaredField2.get(item2))) {return false;}}return true;} catch (Exception e) {throw new RuntimeException(e);}}/*** 根据指定字段对列表进行去重** @param list* @param fields* @param <T>* @return*/public static <T> List<T> distinctByFields(List<T> list, String... fields) {return list.stream().filter(distinctByKey(t->getKey(t, fields))).collect(Collectors.toList());}/*** 辅助方法,用于生成去重的键** @param keyExtractor* @param <T>* @return*/private static <T> Predicate<T> distinctByKey(Function<? super T, ?> keyExtractor) {Map<Object, Boolean> seen = new ConcurrentHashMap<>();return t->seen.putIfAbsent(keyExtractor.apply(t), Boolean.TRUE) == null;}/*** 辅助方法,生成由指定字段的值组成的键** @param item* @param fields* @param <T>* @return*/private static <T> String getKey(T item, String... fields) {StringBuilder key = new StringBuilder();try {for (String field : fields) {Field declaredField = item.getClass().getDeclaredField(field);declaredField.setAccessible(true);key.append(declaredField.get(item)).append("-");}} catch (Exception e) {throw new RuntimeException(e);}return key.toString();}}
http://www.yayakq.cn/news/11800/

相关文章:

  • 箱包网站设计湖南人文科技学院图书馆
  • php不用框架怎么做网站网站开发公司薪酬绩效
  • 沈阳开发网站公司广州网站建设广州网络推广公司排名
  • 怎样用源代码做网站怎么自己编码做网站
  • 做网站公司电话国外网站国内做好还是国外做
  • 深圳市宝安区建设局网站沈阳网站开发外包
  • 张家口住房和城乡建设厅网站wordpress 初始化 数据库
  • 做网站开发的方案网站建设要用到哪些应用工具
  • 沈阳专业网站建设互联网道路运输便民政务服务系统
  • 北京网站建设qq群一个外国人建设的中国文字网站
  • 龙华网站建设哪家公司好seo研究中心qq群
  • 北京网站制作的查询邮箱注册网站
  • 团购模板网站网站建设实训小组报告
  • ui设计 国外网站安徽网站备案手续
  • 17网一起做网店普宁站综合网页设计
  • 秦皇岛做网站哪家好网站如何优化流程
  • word 关于做网站怎样编辑网页
  • 做ppt到哪个网站找图片有趣的网站名称
  • 苏州外贸企业网站建设投诉做网站的电话
  • 网站建设销售员话术网站建设一点通
  • asp 女性 美容 知识 网站 源码微信开放平台文档
  • 广州网站制作Wordpress个人套餐
  • 上海市建设安全协会官方网站网站绑定微信公众号
  • 流量购买网站广东seo推广公司
  • 网站建设建设哪家好建设银行教育网站
  • 网站备案要幕布照网站关键字可以做几个
  • 怎么自建网站线上教学网站怎么建设
  • 揭阳高端网站建设价格建筑网络计划图
  • jsp网站空间网站开发深圳高端响应式网站
  • 织梦网站模板免费下载网站seo优化方案策划书