Java8 通过foreach 遍历List,同时输出下标

Posted 在奋斗的大道

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Java8 通过foreach 遍历List,同时输出下标相关的知识,希望对你有一定的参考价值。

定义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,同时输出下标的主要内容,如果未能解决你的问题,请参考以下文章

java8 怎么一次遍历两个list

java8 怎么一次遍历两个list

在Java8中foreach()不能break,如果需要continue时,怎么办

Java8新特性之forEach遍历

Kotlin集合操作 ③ ( List 集合遍历 | for in | forEach | forEachIndexed | List 通过解构一次性给多个元素赋值 )

Kotlin集合操作 ③ ( List 集合遍历 | for in | forEach | forEachIndexed | List 通过解构一次性给多个元素赋值 )