肥宅钓鱼网
当前位置: 首页 钓鱼百科

java中foreach怎么获取序号(foreach循环如何获取对象的index下标)

时间:2023-07-17 作者: 小编 阅读量: 1 栏目名: 钓鱼百科

java中foreach怎么获取序号?接下来我们就一起去研究一下吧!

java中foreach怎么获取序号?在Java8中,我们经常使用lambada表达式进行foreach循环,但是常常我们在遍历List的时候想获取对象的index,但是Java8、9、10、11都没有相关的支持,同样的问题也存在于增强型for循环中,很多时候不得不含着泪以 for (int i = 0; i < list.size(); i) 的方式写代码,今天小编就来聊一聊关于java中foreach怎么获取序号?接下来我们就一起去研究一下吧!

java中foreach怎么获取序号

在Java8中,我们经常使用lambada表达式进行foreach循环,但是常常我们在遍历List的时候想获取对象的index,但是Java8、9、10、11都没有相关的支持,同样的问题也存在于增强型for循环中,很多时候不得不含着泪以 for (int i = 0; i < list.size(); i) 的方式写代码

由于篇幅原因,小编已将Java系列知识都整理出来了,有需要的私信我关键词 “Java”,回复获取免费下载原文件的方式。

我们的期望

list.forEach((item,index)->{})//编译不通过

常见的list获取index方法for(int i=0;i<list.size();i>)

for (int i = 0; i < list.size(); i) {}

indexOf(Obj)

for (Object o : list) {list.indexOf(o); //如果是Set还没有这个方法}

还有…

int i = 0;for (String s : list) {i;}

很显然上述的方法并不是我们所想要的

Consumer和BiConsumer

我们看个简单的例子

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对象

定制Consumer

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:333

PS:这个Set也可以用哦,不过在Set使用中这个index可不是下标

看完这篇文章你学会了吗?

注意一下咯:由于篇幅原因,小编已将JAVA相关的知识都集结整理出来了,有需要的私信我关键词 “Java”,回复获取免费下载原文件的方式。

作者:RhapsodyDandelion链接:https://juejin.cn/post/6951283538687688717来源:掘金

,
    推荐阅读
  • 龙珠孙悟饭vs小沙鲁(TGS龙珠Z卡卡罗特实机演示)

    后半部分则是《龙珠》里非常经典的“孙悟饭大战沙鲁”的桥段,处于危难之际的孙悟饭,受到了父亲孙悟空的精神鼓舞,借助贝吉塔偷袭创造出的空隙,父子合力发动超强龟派气功击败了沙鲁。《龙珠Z:卡卡罗特》PS4/XboxOne版将于2020年1月16日发售,其Steam版则将于2020年1月17日发售。

  • 银杯子不能泡哪些东西(银杯子具体不能泡哪些东西)

    下面希望有你要的答案,我们一起来看看吧!银杯子不能泡哪些东西不得处理卤素,如王水、溴水及盐酸与氧化剂,三氯化铁对银有侵蚀作用,因此不能与三氯化铁接触。银杯子需要保持清洁,内外应光亮,经过长久灼烧后,外表可能黯然无光,日久必深入到内部致使之破裂,因此需要清除不洁之物。

  • 领导司机的注意事项(领导司机要注意什么)

    领导司机的注意事项司机这个职业,安全永远放在第一位。要做到熟悉路况,遵守交通规则。要时刻保持车内外整洁干净。不要坐在车内等领导,要在车外,等领导到达时,主动给领导开门。开车便是在工作状态当中,在这个过程当中接听电话,不但有安全隐患,还会给领导留下不好的印象。如有紧急的事情,则将车辆靠边停下,征求领导同意后再接听电话。

  • 新潮的婴儿小名(新潮洋气的婴儿小名)

    同时,云朵还带有一种梦幻的色彩,很有少女的气质,其是一个很美的宝宝小名。“米粒”是农民辛勤劳动的成果,所以,这个词有收获的含义,并且,为宝宝起这个小名,也是希望其在未来经过自己的努力之后,能有所收获,而且农民的辛勤劳动就像是父母对孩子的爱,总有一天能开花结果。同时,“米粒”小巧可爱,纯洁干净,还给人一种甜糯甜糯的感觉,很有小女孩的甜美可爱。

  • 智能语音提醒闹钟(小度语音智能闹钟)

    小度语音智能闹钟#小度推出首款助眠语音智能闹钟#​#一场让人秒睡的发布会#​作为一个自由职业者,时间上比上班族更宽松,但也需要自己有很好的自律性,生活作息更要规律正常,这样才能促进高效工作和身体健康一款超高颜值的桌面。

  • 房贷还款日当天还款可以吗?(房贷还款日当天晚上还款算逾期吗)

    房贷还款日当天还款可以吗房贷只要在还款日前还上当月月供就属于按时还款,不算逾期的。但要判断还款是否逾期,看的不是借款人还款进去的时间,而是银行系统扣款的时间。借款人在还款日当天晚上往还款卡里充了钱用作还款,但如果已经错过了银行系统的扣款时间的话,那银行系统就不会再进行扣款。而银行不扣款,还款人当天自然就是还不了款的。而还不了款,等过了还款日,自然就会出现逾期的情况。

  • 好句子大全(这些句子经典至极送给自己)

    接下来我们就一起去研究一下吧!好句子大全不随波逐流,不妄自菲薄,做自己喜欢做的事,赚自己喜欢赚的钱。岁月静好的慢生活,是有资本有底气的自给自足,而不是好吃懒做的得过且过,自欺欺人。日复一日的生活,时而让人绝望,时而又充满希望。未来的日子,愿你脚下有风,心中有爱,口袋有钱,自信满满,活出最美丽的自己。其实,许多事从一开始就已料到了结局,往后所有的折腾,都不过只是为了拖延散场的时间。

  • 暑假整形经历(学生暑期整形成风)

    德州圣韩美医疗美容部接待人员表示,大部分学生的开学时间是9月份,因为还要留出恢复时间,所以大部分学生都是提早预约。据了解,双眼皮手术是比较受青少年青睐的整形项目,但盲目跟风仍然存在风险。此外,由于怀孕时会导致乳房二次发育,所以女性的隆胸手术应该选在生育之后。王晓屹表示,只有达到两次“黑记录”的行政处罚后,才会被移送公安机关进行处理。

  • 亚马逊质量认证(亚马逊要求ISO9001质量管理体系证书贸易电商怎么办理)

    亚马逊质量认证?亚马逊要求ISO9001质量管理体系证书贸易电商怎么办理?

  • 干炸小肉丸怎么做(干炸小肉丸做法)

    我们一起去了解并探讨一下这个问题吧!干炸小肉丸怎么做猪肉末加入葱姜末、料酒、鸡蛋液、盐、酱油、黄酱、水淀粉搅拌均匀。花椒稍炒擀末,制成椒盐。锅放油烧六成热,将肉馅挤成个头均匀的小丸子,入锅炸至金黄色捞出。用勺将丸子轻轻拍松,再入锅炸,反复炸几次,至焦脆捞出装盘,上桌时,随带椒盐味碟供蘸食。