定义lambada式工具类:

import java.util.function.BiConsumer;
import java.util.function.Consumer;public class LambadaTools {/*** 利用BiConsumer实现foreach循环支持index** @param biConsumer* @param <T>* @return*/public static <T> Consumer<T> forEachWithIndex(BiConsumer<T, Integer> biConsumer) {/*这里说明一下,我们每次传入forEach都是一个重新实例化的Consumer对象,在lambada表达式中我们无法对int进行++操作,我们模拟AtomicInteger对象,写个getAndIncrement方法,不能直接使用AtomicInteger哦*/class IncrementInt{int i = 0;public int getAndIncrement(){return i++;}}IncrementInt incrementInt = new IncrementInt();return t -> biConsumer.accept(t, incrementInt.getAndIncrement());}
}

功能代码演示:

value.stream().forEach(LambadaTools.forEachWithIndex((item, index)->{// 当前生成序号Integer currentSeqNo = seqNOMax + index + 1;// 设置默认盒宽度item.setBoxWidth(2.0);// 补全盒涉及库房信息String address = this.getWarehourseByLocation(item.getSid(), list, warehourseList);if(StringUtils.isNotEmpty(address)){String[] warehourseArray = address.split("-");item.setWarehouseSid(warehourseArray[0]);item.setColumnSid(warehourseArray[1]);item.setSegmentSid(warehourseArray[2]);item.setLayerSid(warehourseArray[3]);}// 设置盒序号item.setSeqNo(currentSeqNo);// 设置批次号item.setBatchNo(StringFormatUtil.addZeroForNum(String.valueOf(batchNoMax), 5));// 生成案卷号= 项目/工程档号+ 盒序号item.setBoxRegNo(this.getBoxRegNoByBoxSid(currentSeqNo, item.getSid()));}));

Java8 通过foreach 遍历List,同时输出下标相关推荐

  1. Java8 Stream 流的创建、筛选、映射、排序、归约、分组、聚合、提取与组合、收集、接合、foreach遍历

    目录 一  了解Stream 1 Stream概述 那么什么是Stream? Stream可以由数组或集合创建 Stream有几个特性: Stream流的起始操作 2 Stream的创建----Str ...

  2. PHP数组foreach遍历输出例子详解

    通常我们对于数据遍历会使用到foreach来操作当然也有使用到while list each函数来实现了,但在方便面上来看foreach更简洁好用性能也非常的不错,下面本人整理了一款在开发应用中for ...

  3. JAVA8新特性之 判断 list 是否为空进行 foreach 遍历

    JAVA8新特性之 判断 list 是否为空进行 foreach 遍历 ArrayList<String> dateList = new ArrayList<>(); Opti ...

  4. java8 循环map_Java8遍历Map的三种方式——for/stream/forEach

    最近写在基于Spring WebFlux项目遇到一个需求,希望将请求中的cookie/headers/params等信息获取,而获取后的数据结构都是MultiValueMap的数据结构,实质上可以看做 ...

  5. php each函数二维数组,PHP特定函数foreach遍历一二维数组

    foreach遍历数组的好是可以不知道数组的长度从而读出数组的key,name出来了,在php的foreach中有两种方法,arr_name as $value 和arr_name as $key = ...

  6. php倒序正序,php foreach正序倒序输出示例代码

    php foreach正序倒序输出示例代码 实现代码: // 正序 foreach($files as $file_num => $file) { if(is_file($directory.$ ...

  7. foreach遍历进阶_“枚举器“/GetEnumerator()方法

    通过foreach遍历数据,实际上是调用了一个"枚举器"来遍历数据,和foreach没有任何关系,foreach只是语法上的简化而已,或者说foreach语句降低了枚举的复杂度. ...

  8. PAT甲级1155 Heap Paths (30 分):[C++题解]堆、堆的遍历、树的遍历、dfs输出路径、完全二叉树建树

    文章目录 题目分析 题目链接 题目分析 来源:acwing 分析: 堆首先是完全二叉树,所以先建完全二叉树,由于给定的是层序遍历的数据,所以直接用数组即可,注意数组下标从1开始,这样便满足结点u和左儿 ...

  9. php类可以遍历,在PHP中检测一个类是否可以被foreach遍历

    在PHP中检测一个类是否可以被foreach遍历 在PHP中,我们可以非常简单的判断一个变量是什么类型,也可以非常方便的确定一个数组的长度从而决定这个数组是否可以遍历.那么类呢?我们要如何知道这个类是 ...

最新文章

  1. UVA_11922 Permutation Transformer 【splay树】
  2. 一个空值_java匠人手法优雅的处理空值
  3. UE4笔记-进程/线程/网络/IO模块的相关问题记录
  4. 【poj3709】 K-Anonymous Sequence
  5. Java EE的三层架构
  6. 设计模式学习笔记-观察者模式
  7. 上下定高 中间自适应_上下固定中间自适应布局
  8. shell学习之跳出循环
  9. bzoj2151: 种树
  10. Golang让协程交替输出
  11. hack_lu_2018_heap_heaven
  12. 2021CSP-J题解整合
  13. GPIO模拟MDC/MDIO协议
  14. twitteR Unauthorized
  15. MySQL 从入门到实践,万字详解!
  16. Redis从入门到入坟系列文章(一): keys 命令
  17. (第三天)磁盘分区----LVE逻辑卷
  18. 西游记笔记与想法(1)
  19. 射频和无线技术入门--传统技术--7
  20. 智能硬件产品经理需要具备的知识

热门文章

  1. 移动优先和桌面优先的状态
  2. 8. python str( )函数
  3. python1到100奇数和_python计算1~100的和,1~100奇数的和,1~100偶数的和,一条代码求1~100的和...
  4. (SEED-Lab) Sniffing_Spoofing
  5. 搭建政务民生可视化管理系统 | 智慧城市
  6. 论文导读:TOWARDS END-TO-END SPOKEN LANGUAGE UNDERSTANDING
  7. vue-router路由history模式+nginx部署项目到非根目录下(实践版)
  8. 获取docker容器里面的root权限
  9. 动森服务器维护什么时候好,仙境传说RO爱如初见7月1日服务器停机维护
  10. rstudio查询命令_R语言和RStudio的一些用法,常用命令等