在学习mybatis遍历结果的时候,突然想起有好多种遍历方式,但是我本身并不清楚这些遍历的原理,很难理解他们之间的不同
List<user> users=session.selectList("selectAll");
for (user u : users) {
System.out.println(u);
}
for (int i = 0; i < users.size(); i++) {
user u = users.get(i);
System.out.println(u);
}
这两种遍历结果都是一样的
那么他们之间的区别是什么呢,使用场景有区分吗?
第一种方式,增强for循环,底层使用的是迭代器
这种方式的好处是,不需要一个额外的循环变量,而且代码精简,可读性强
但是在遍历过程中不可以修改集合的长度,会造成遍历出错
还有,如果你有两个一样长度的集合需要一起遍历,这种方式也没办法
最后,你想在遍历过程中直接修改集合里的值,也不行,因为取出来的只是拷贝,除非里面放的都是引用类型
第二种方式是传统for循环,i作为下标
好处就是可以正向遍历,可以反向遍历,可以同时遍历多个集合,也可以通过下标修改原始值
灵活性非常高
坏处就是代码要多一些,不小心容易造成索引越界
还望采纳:
以上两种方法均可以遍历MyBatis查询结果集。
第一种方式:使用增强for循环,用于遍历集合,自动获取集合中的元素。
第二种方式:使用传统for循环,通过遍历数组下标获取数组中的元素。
在效率上,两种方法基本相同,选择使用哪种方法通常取决于代码可读性。