破解版佟丽娅遭群狼威压1V2G小三的代价
AI换脸佟丽娅卷入胁迫事件,破解资源揭露暗黑剧情。...
2026-01-21
在Java8中,我们经常使用lambada表达式进行foreach循环,但是常常我们在遍历List的时候想获取对象的index,但是Java8、9、10、11都没有相关的支持,同样的问题也存在于增强型for循环中,很多时候不得不含着泪以 for (int i = 0; i < list.size(); i++) 的方式写代码
由于篇幅原因,小编已将Java系列知识都整理出来了,有需要的私信我关键词 “Java”,回复获取免费下载原文件的方式。
list.foreach((item,index)->{}) //编译不通过for (int i = 0; i < list.size(); i++) { }for (Object o : list) { list.indexOf(o); //如果是Set还没有这个方法}int i = 0;for (String s : list) { i++;}很显然上述的方法并不是我们所想要的
我们看个简单的例子
Consumer<String> consumer = t -> System.out.println(t);consumer.accept("single");BiConsumer<String, String> biConsumer = (k, v) -> System.out.println(k+":"+v);biConsumer.accept("multipart","double params");输出结果:
singlemultipart:double params这里不难发现我们平时写的箭头函数其实是一个Consumer或者BiConsumer对象
foreach源码
default void forEach(Consumer<? super T> action) { Objects.requireNonNull(action); for (T t : this) { action.accept(t); }}分析源码可知,我们的list foreach方法传入的是Consumer对象,支持一个参数,而我们想要的是item,index两个参数,很明显不满足,这时我们可以自定义一个Consumer,传参是BiConsumer,这样就能满足我们需求了,代码如下:
import java.util.ArrayList;import java.util.List;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()); }}调用示例:
List<String> list = new ArrayList();list.add("111");list.add("222");list.add("333");list.forEach(LambadaTools.forEachWithIndex((item, index) -> { System.out.println(index +":"+ item);}));输出结果如下:
0:1111:2222:333PS:这个Set也可以用哦,不过在Set使用中这个index可不是下标
看完这篇文章你学会了吗?
注意一下咯:由于篇幅原因,小编已将JAVA相关的知识都集结整理出来了,有需要的私信我关键词 “Java”,回复获取免费下载原文件的方式。
以上内容就是为大家推荐的javaindexof函数的用法(java中的substring方法)最佳回答,如果还想搜索其他问题,请收藏本网站或点击搜索更多问题
内容来源于网络仅供参考版权声明:所有来源标注为小樱知识网www.xiaoyin02.com的内容版权均为本站所有,若您需要引用、转载,只需要注明来源及原文链接即可。
本文标题:javaindexof函数的用法(java中的substring方法)
本文地址:https://www.xiaoyin02.com/shcs/115650.html
相关文章
热点文章
2021年独生子女补贴新政策是真的吗(独生子女证有有效期吗)
2021年国庆节阅兵仪式几点开始几点结束(2021年国庆节还有阅兵吗)
鼠目寸光一点红是什么生肖动物(鼠目寸光一点红)指什么生肖,紧密
k0到k9的玩法大全(强制gc的玩法和注意事项)
入土为安是什么生肖《入土为安》打一个生肖动物,词语解释
浙江12月底全面停工是真的吗(浙江什么时候放假停工)
如何做t(t怎么把p做哭)
北京口碑最差的三甲医院(北京301医院最擅长什么)