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

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

,
    推荐阅读
  • 好用防尘口罩有哪些品牌的(还在找工业防尘口罩品牌排行榜)

    防尘口罩的主要是为了过滤工作环境中的粉尘颗粒,因此选购工业防尘口罩最重要的一条就是选择过滤效率高的工业防尘口罩。因为工作需要,工业防尘口罩是需要长时间佩戴的,如果产生憋闷会影响工作效率。因此我们应该尽量选择吸气阻力较低的工业防尘口罩。选择工业防尘口罩时尽量选择主体材质为硅胶的,硅胶材质更贴合面部,密封性更好,同时硬度与皮肤更接近,长时间佩戴无压面感会更加舒适。

  • 豌豆花是完全花吗 豌豆花是完全花吗图片

    豌豆花是完全花,因为它是由萼片、花瓣、雄蕊和雌蕊这四部分所组成的,而一朵花若是具备了这四点的话,那就可以将它列为完全花,否则的话,它就是不完全花。对于豌豆花来说,它属于完全花,同时也属于双性花,相对而言,豌豆花在我国境内比较常见,而且花瓣多呈现出粉红色。

  • 教师招聘笔试成绩一般什么时候出(教师招聘笔试成绩在哪儿公布)

    以下内容大家不妨参考一二希望能帮到您!教师招聘笔试成绩一般什么时候出一般招考公告里面会写明笔试时间,笔试成绩发布时间,面试时间等,如果公告里没有明确说明,那么笔试成绩一般是在考后结束的7-15天内发布。教师招聘考试的成绩可以登录官网进行查分或者官方网站会公布合格名单,有些省份会在当地的人力资源和社会保障厅网站、教育中心网站、人事考试网上发布。

  • 其他收益属于什么科目(其他收益属于损益类会计科目)

    以下内容大家不妨参考一二希望能帮到您!其他收益是新政府补助准则下新设的会计科目,“其他收益”是修订新增的一个损益类会计科目,应当在利润表中的“营业利润”项目之上单独列报“其他收益”项目,计入其他收益的政府补助在该项目中反映。

  • cpu性能排行天梯图及价格(CPU怎么对比性能好坏)

    对于CPU这种高技术产物,是没有杂牌的,装机市场上目前可选的两大品牌分别就是Intel和AMD,尤其是近两年的发力,AMD拉近了与intel的差距,可以说两者各有千秋。下面装机之家分享一下2020年1月-2月CPU天梯图性能排行榜。而AMD处理器主要是一代、二代、三代,目前在售只有三代和部分二代产品,现阶段装机建议首选三代锐龙产品。热门型号以红色标注,老型号以灰色标注,而目前在售型号以绿色标注。

  • oppo opporeno8

    演示机型:opporeno6系统版本:ColorOS11opporeno6是升降摄像头。OPPOReno6搭载联发科天玑900八核处理器,后置6400万像素+800万像素超广角镜头+200万像素微距镜头三摄,支持延时摄影、慢动作、超级文本等拍照功能,前置3200万像素。搭载4300毫安时容量电池。OPPOReno6屏幕采用6.43英寸AMOLED屏幕;高度约156.8毫米,宽度约72.1毫米,厚度约7.59毫米,重量约182克。配有夏日晴海、星河入梦、夜海、星黛紫四种颜色。

  • 青岛市工会福利发放(加油最高可减60元)

    ★活动二活动期间,用户每日使用云闪付APP绑定德阳工会会员卡出示付款码进行支付,在指定中石油加油站可享受满200元减40元的优惠活动,同一用户单月限享受1次优惠。

  • 今日黄金价格国际行情网(今日国际黄金价格)

    今日国际黄金价格2016年02月08日国际黄金价格:今日国际黄金价格多少钱一克(2016-02-0809:36:26更新):今日国际黄金价格:1166.47美元/盎司国际黄金价格:送别了美联储会议,又迎来了超级周除过。

  • 虎皮鹦鹉洗澡怎么洗(虎皮鹦鹉洗澡如何洗)

    虎皮鹦鹉洗澡怎么洗?下面希望有你要的答案,我们一起来看看吧!虎皮鹦鹉洗澡怎么洗需要给虎皮鹦鹉洗澡时,选一个温暖的晴天,准备一个喷壶,将水直接喷在虎皮鹦鹉的羽毛上,接下来它会自己清理干净毛发。或者在笼子里放一盆水,虎皮鹦鹉也会自己跳进去洗澡。夏天可以用冷水洗,冬天则用温水,每次洗完后注意尽快让它将羽毛晒干。