AnGuoK 2018-01-21 15:27 采纳率: 20%
浏览 3147
已结题

关于for循环遍历,下面的两种的方式有什么不同?

1、// adapter.getCheckBox()是获得从adapter中返回的Arrayliset数组;dao.save()是保存获得数据
for (int i=0;i<adapter.getCheckBox().size();i++){
dao = new ContactsDao(getApplicationContext());
ContactsBean c=adapter.getCheckBox().get(i);
dao.save(c);
}

2、 for (ContactsBean c:adapter.getCheckBox()) {
                dao = new ContactsDao(getApplicationContext());
                dao.save(c);
            }




3、结果
第一种遍历方式得到一个无限循环的结果;第二种就不会出现无限循环的情况,请解释一下为甚会出现这中请况?顺便说说两种方式的应用场景有什么不同?
  • 写回答

15条回答 默认 最新

  • threenewbee 2018-01-21 15:42
    关注
     大多数情况下,两者是一样的,但是有一个例外,就是i<adapter.getCheckBox().size()是一个变量。比如说,你循环里添加或者删除集合的数据。
    如果两个程序是等价的,那么怎么写是个人偏好问题,但是下面的更简洁。如果两个程序因为上面说的原因而不等价,那么就要看你的算法。
    
    评论

报告相同问题?

悬赏问题

  • ¥15 DIFY API Endpoint 问题。
  • ¥20 sub地址DHCP问题
  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突