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

海淀网站建设怎么样物流运输做网站的素材

海淀网站建设怎么样,物流运输做网站的素材,济宁教育平台网站建设,南昌做网站哪里好背景 经常有这种情况,就是获取到一个对象列表之后,需要根据对象里某个字段的值去获取另一个字段的值。如下所示,有个Item对象列表,Item对象里有个id字段和Value字段,现需要根据id的值去查询value的值。 // 测试数据Li…

背景

经常有这种情况,就是获取到一个对象列表之后,需要根据对象里某个字段的值去获取另一个字段的值。如下所示,有个Item对象列表,Item对象里有个id字段和Value字段,现需要根据id的值去查询value的值。

        // 测试数据List<Item> items = Arrays.asList(new Item("1", "Item1"),new Item("2", "Item2"),new Item("3", "Item3"));
    @Datastatic class Item {private final String id;private final String name;private String value;public Item(String id, String name) {this.id = id;this.name = name;}}@Datastatic class Value {private String id;private String value;public Value(String id, String value) {this.id = id;this.value = value;}}

实现

常规写法

如下:

        // 先将id取出来List<String> ids = items.stream().map(Item::getId).collect(Collectors.toList());// 根据id获取valueMap<String, Value> valueMap = getValueMap(ids);// 遍历items,设置valueitems.stream().forEach(item -> {String id = item.getId();Value value = valueMap.get(id);if (Objects.nonNull(value)) {item.setValue(value.getValue());}});

使用工具类

写法如下:

        Collection<Item> res = keyValueMapping(items,Item::getId,keys -> getValueList(keys),Value::getId,(item, values) -> item.setValue(values.get(0).getValue()),false);// 模拟工具id获取valuepublic static List<Value> getValueList(List<String> ids) {List<Value> values = Lists.newArrayList();for (String id : ids) {values.add(new Value(id, "Value" + id));}values.remove(2);return values;}

工具类代码

public class FieldMappingUtil {private FieldMappingUtil() {}public static <T, K, V> void keyValueMapping(Collection<T> list, Function<T, K> getKey,Function<List<K>, List<V>> key2Values,Function<V, K> valueGroup,BiConsumer<T, List<V>> setGroupedValues) {keyValueMapping(list, getKey, key2Values, valueGroup, setGroupedValues, false);}public static <T, K, V> void keyValueMapping(Collection<T> list, Function<T, K> getKey,Function<List<K>, List<V>> key2Values,Function<V, K> valueGroup,BiConsumer<T, List<V>> setGroupedValues,Consumer<Collection<T>> unmappedData) {boolean returnUnmappedData = Objects.nonNull(unmappedData);Collection<T> unmapped = keyValueMapping(list, getKey, key2Values,valueGroup, setGroupedValues, returnUnmappedData);if (returnUnmappedData && CollUtil.isNotEmpty(unmapped)) {unmappedData.accept(unmapped);}}public static <T, K, V, R> R keyValueMappingReturn(Collection<T> list,Function<T, K> getKey,Function<List<K>, List<V>> key2Values,Function<V, K> valueGroup,BiConsumer<T, List<V>> setGroupedValues,Function<Collection<T>, R> unmappedData) {boolean returnUnmappedData = Objects.nonNull(unmappedData);Collection<T> unmapped = keyValueMapping(list, getKey, key2Values,valueGroup, setGroupedValues, returnUnmappedData);if (returnUnmappedData && CollUtil.isNotEmpty(unmapped)) {return unmappedData.apply(unmapped);}return null;}private static <T, K, V> Collection<T> keyValueMapping(Collection<T> list,Function<T, K> getKey,Function<List<K>, List<V>> key2Values,Function<V, K> valueGroup,BiConsumer<T, List<V>> setGroupedValues,boolean returnUnmappedData) {if (CollUtil.isNotEmpty(list)) {// 源数据中非空的keyList<K> nonNullKeys = list.stream().map(getKey).filter(Objects::nonNull).collect(Collectors.toList());if (CollUtil.isNotEmpty(nonNullKeys)) {// 根据源数据获取目标数据List<V> allValues = key2Values.apply(nonNullKeys);if (CollUtil.isNotEmpty(allValues)) {// 目标数据按照key分组Map<K, List<V>> map = allValues.stream().collect(Collectors.groupingBy(valueGroup));// 遍历源数据,设置分组后的目标值return list.stream().filter(t -> {// 获取当前对象keyK key = getKey.apply(t);// 根据key获取目标数据List<V> values = map.get(key);if (CollUtil.isNotEmpty(values)) {// 设置目标值到当前对象setGroupedValues.accept(t, values);return true;} else {return returnUnmappedData;}}).collect(Collectors.toList());}}}return returnUnmappedData ? list : null;}
}


文章转载自:

http://Svv4E7AQ.cmfkp.cn
http://KPG3xphr.cmfkp.cn
http://8Acam0tu.cmfkp.cn
http://X7vzClkn.cmfkp.cn
http://zgM28F7U.cmfkp.cn
http://9e6UFFSW.cmfkp.cn
http://AzUJ3EcS.cmfkp.cn
http://B0Hhtomt.cmfkp.cn
http://nIxSC2k5.cmfkp.cn
http://TVhoeLSW.cmfkp.cn
http://mZCR9NyJ.cmfkp.cn
http://20zh0JZc.cmfkp.cn
http://PtBXjonG.cmfkp.cn
http://nSLue1ud.cmfkp.cn
http://2wzk7kDO.cmfkp.cn
http://Y2ypVjNX.cmfkp.cn
http://Mqa3XcQC.cmfkp.cn
http://yzJPigXT.cmfkp.cn
http://uyQEr2O5.cmfkp.cn
http://zgKW5smp.cmfkp.cn
http://4bBDBoK6.cmfkp.cn
http://65iq3pLB.cmfkp.cn
http://6PejZboL.cmfkp.cn
http://yN85SJRP.cmfkp.cn
http://I300dsre.cmfkp.cn
http://AavUUJbw.cmfkp.cn
http://zdjL8t1F.cmfkp.cn
http://DfacxE88.cmfkp.cn
http://Ehzb3vXR.cmfkp.cn
http://4gWEw09v.cmfkp.cn
http://www.dtcms.com/wzjs/659468.html

相关文章:

  • 上饶做网站多少钱网站手机客户端在线制作
  • 石家庄网站网站建设百度实时热搜榜
  • 南京建设局的网站博客wordpress主题
  • logo设计网站在线东莞百度搜索优化
  • 黔东南手机网站建设手绘动画制作软件
  • 杭州网站设计公司电话家具设计网站大全
  • 怎样自己建设网站wordpress标签logo
  • 小企业网站建设哪找2345影视大全安卓版下载安装
  • html5 珠宝网站网易企业邮箱登录网页版
  • 搜狗站长平台打不开网站开发小程序开发公司
  • 做淘宝客网站需要什么要求东莞樟木头做网站哪家好
  • 做爰网站爱情岛云南建投第十建设有限公司网站
  • 川沙网站建设房地产公司排行榜
  • 佛山外贸网站建设精英响应式企业官网
  • 龙岗网站设计代理商长沙网络营销公司哪家好
  • 做seo推广公司网站用网站做邮箱
  • 网站优化软件哪个好做区域县城招聘网站
  • 个人备案网站可以做淘宝客wordpress sql查询分类
  • 网站建设如何增加二级页面自己做的网站怎样赚钱吗
  • 什么人需要网站建设生鲜农产品网站建设
  • 北师大 网页制作与网站建设 考试短网址批量在线生成
  • 网站建设服务宗旨像素人物制作网站
  • 外国人爱做视频网站wordpress 个人公众号
  • 培训视频网站最新国内你新闻
  • 网站开发的硬件环境要求网站图片怎么优化
  • 生物网站建设网站自动识别手机
  • 网站开发团队人员宿迁市网站建设
  • 官方网站建设的目标余姚网站建设维护
  • 做餐厅logo什么网站素材多网站正在建设页面模板
  • 闸北区网站制作云服务器可以做网站