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

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来源:掘金

,
    推荐阅读
  • 启明星是什么意思比喻什么(怎么理解启明星的意思)

    启明星是什么意思比喻什么启明星在我国是一个非常特殊的星星,早晨它出现在东方,叫启明星;傍晚它出现在西方,叫长庚星;民间又称它太白星,其实它就是金星。启明星指引导光明,正确方向的领路人,启明星又叫长庚星,就是金星,在太阳落山时的西方,拂晓的东方每天两次。金星是天空中除了太阳和月亮外最亮的星,亮度最大时比全天最亮的恒星天狼星亮14倍,我国古代称它为太白,罗马人则称它为维纳斯-爱与美的女神。

  • 汉语言文学专业考研的8大方向有哪些是热门的(下文介绍)

    汉语言文学专业考研的8大方向有哪些是热门的汉语言文学专业具体包括8个方向:文艺学、语言学及应用语言学、汉语言文字学、中国古典文献学、中国古代文学、中国现当代文学、中国少数民族语言文学、比较文学与世界文学。文学类是很多人都会做的选择,但是考的人多,竞争压力会很大。语言类中对外汉语比较热门,但实际上是比较难找工作的。古代汉语算是冷门,但冷门往往更佳,少了竞争,如果是少数民族考的话更有优势。

  • 有什么其他的盗墓题材电视剧(尘封在历史中的优秀盗墓题材电视剧墓道)

    《墓道》根据李君纪实小说《关中盗墓贼》改编。在拍摄过程中,由于剧名过于敏感,才改成了现在的剧名《墓道》。因此在这里取景,才能最大限度地还原真实的盗墓情况。电视剧开头,同事们又在调侃他帮人写挽联贴补家用,但宋若虚不争不恼,只是一笑置之。但是,本剧主要角色的人性是复杂的。能塑造出一个活的人物更是可遇不可求,毫无疑问,《墓道》做到了。

  • 椒盐藕丁如何做(椒盐藕丁的做法)

    以下内容希望对你有帮助!椒盐藕丁如何做莲藕500克、盐1匙半、麻椒粉1匙、海鲜酱油1勺。去掉表面淀粉不容易粘锅。油炸5分钟捞出。麻椒粉少许,拌匀即可食用。

  • 世界十大赛马人(堪称世界一绝的)

    马赛人是非洲比较活跃的一支游牧民族,民风彪悍、民俗奇特,现在还有将近100万人,生活在肯尼亚南部和坦桑尼亚北部地区。传统的马赛人一直延续着游牧传统,数百年来,他们在非洲辽阔的大地上逐水草而牧,靠围猎而生。马赛人还有一个强项是他们超强的弹跳力,跳高不只出现在祭祀仪式上,马赛人日常生活中更是随处可见。当然,跳高更是马赛人日常的娱乐,蓝天下,草原上,红衣的马赛人腾空而起,留下一抹抹惊艳。

  • 猪八戒马德华早期节目(72岁猪八戒马德华一家近照曝光)

    下面希望有你要的答案,我们一起来看看吧!猪八戒马德华早期节目

  • 家常的炒菜的做法(家常炒菜的做法)

    家常的炒菜的做法炒土豆片。锅中放入少许油加热放入切好的土豆片,煎至两面金黄。再一次加生抽、砂糖、盐、辣椒面、大蒜末、白芝麻、孜然粒、老抽、混合搅拌均匀即可。花猪肉洗净,切成长3厘米,宽5毫米,厚5毫米的丝,与盐、40克淀粉搅拌均匀,腌渍入味。把酱油、35克淀粉放入碗内,加鸡汤勾兑成芡汁。

  • 正确的蜜蜂养殖方法(一年四季过下来)

    冬天结束后开始计划养蜂,此时是购入蜂群的好时机。放置一两个空巢脾,防止蜂群拥挤的蜂群出现分蜂热。暑期工作夏季,不要过度干预蜜蜂,只需要两周检查一次,留意潜在问题,蜜蜂会自己照顾自己的。停止饲喂,避免蜜蜂在炎热的夏季采集。经常检查确保蜂王安全。监测螨虫发展,防治蜂螨侵扰。检查疾病,治疗或丢弃患病的巢脾。确保所有疾病治疗均已完成。冬天来临时,经常观察蜂箱以防风害,并检查巢门口确保通风。

  • 鸡汤怎么选鸡 做鸡汤用哪种鸡

    对于肾阳不足所致的小便频密、精少精冷等症有很好的辅助疗效,比较适合青壮年男性食用。但也因为火气大,高血压、中风、癌症、痛风以及风热感冒的病人不适合多吃。另外,公鸡也被列为发物之一,有过敏症、牛皮癣的人最好少吃。特别对经期或者产后血虚的女性,还有补血的作用。比起公鸡来,母鸡肉更加老少兼宜,尤其适合体质虚弱的老年人。

  • 什么是最受欢迎的意大利甜品(十大最受欢迎的意大利甜品)

    松饼来自于模具的称谓,可以松软,可以劲脆,在意大利米乐塞大区非常受欢迎。这些都是来自意大利的硬菜,而我们所秉承的健康饮食概念,都会在制作甜点的过程中,采用低卡糖进行调味,可以让您享用得更安心。