JAVA List 迭代遍历案例
来源:互联网 发布:打谱软件overture教程 编辑:程序博客网 时间:2024/06/05 00:48
在工作中,经常会需要读取list数据。总结下平时工作中用到的一些方法。
首先来聚个简单地LIst例子。以及他们之间的区别:
实际案例:
方法一:使用for获取
package test.java;
import java.util.ArrayList;
import java.util.List;
public class LIstTest {
publicstatic void main(String[] args) {
List test =new ArrayList();
test.add("a");
test.add("b");
test.add("c");
//for
for(int i =0; i < test.size(); i++){
System.out.println("List第" + i + "位是:" + test.get(i));
}
}
}
方法二:foreach获取
package test.java;
import java.util.ArrayList;
import java.util.List;
public class LIstTest {
publicstatic void main(String[] args) {
List test =new ArrayList();
test.add("a");
test.add("b");
test.add("c");
//foreach
for(String s: test){
System.out.println(s);
}
}
}
方法三:Iterator迭代器
package test.java;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class LIstTest {
publicstatic void main(String[] args) {
List test =new ArrayList();
test.add("a");
test.add("b");
test.add("c");
//Iterator
Iterator it= test.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
上面都是获取List案例,为什么会出现那么多方式呢?他们之间又有什么相同点和区别呢?
相同点相信都知道,那就是遍历List数组。
那么不同点主要有:
1、形式上的不同:
for:for(int i = 0; i < test.size(); i++)
foreach: for(String s : test)
Iterator: Iterator it = test.iterator();
while(it.hasNext())
2、条件不同:
for:for需要知道List集合(数组)的长度,逐个有序遍历。
foreach:foreach和Iterator虽然不需要知道数组长度,但是foreach需要知道List集合内元素类型,都是获取到元素之后再处理。
3、多态差别:
for:for和foreach都需要知道集合类型,甚至是集合内部元素类型,所以访问内部元素时,不能实现多态。
Iterator:Iterator是一个接口类型,他不关心集合或者数组类型,并且可以随时删除修改集合元素。当我们需要遍历不同的集合时,我们只需要传递集合的iterator(如test.iterator()),这就是iterator的好处,他不包含任何有关他所遍历的序列的类型信息,能够将遍历序列的操作与序列底层的结构分离。迭代器统一了对容器的访问方式。这也是接口的解耦的最好体现。
4、使用场景:
for:适合一些简单地数组
foreach:适合一些了解集合内部元素类型的集合
Iterator:功能比较强大,对于一些不知道数据类型,或者说需要对不同容器实现同样的遍历时使用,效果很好!
另注:
我们工作中,也会经常用到List
首先来聚个简单地LIst例子。以及他们之间的区别:
实际案例:
方法一:使用for获取
package test.java;
import java.util.ArrayList;
import java.util.List;
public class LIstTest {
publicstatic void main(String[] args) {
List test =new ArrayList();
test.add("a");
test.add("b");
test.add("c");
//for
for(int i =0; i < test.size(); i++){
System.out.println("List第" + i + "位是:" + test.get(i));
}
}
}
方法二:foreach获取
package test.java;
import java.util.ArrayList;
import java.util.List;
public class LIstTest {
publicstatic void main(String[] args) {
List test =new ArrayList();
test.add("a");
test.add("b");
test.add("c");
//foreach
for(String s: test){
System.out.println(s);
}
}
}
方法三:Iterator迭代器
package test.java;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class LIstTest {
publicstatic void main(String[] args) {
List test =new ArrayList();
test.add("a");
test.add("b");
test.add("c");
//Iterator
Iterator it= test.iterator();
while(it.hasNext()){
System.out.println(it.next());
}
}
}
上面都是获取List案例,为什么会出现那么多方式呢?他们之间又有什么相同点和区别呢?
相同点相信都知道,那就是遍历List数组。
那么不同点主要有:
1、形式上的不同:
for:for(int i = 0; i < test.size(); i++)
foreach: for(String s : test)
Iterator: Iterator it = test.iterator();
while(it.hasNext())
2、条件不同:
for:for需要知道List集合(数组)的长度,逐个有序遍历。
foreach:foreach和Iterator虽然不需要知道数组长度,但是foreach需要知道List集合内元素类型,都是获取到元素之后再处理。
3、多态差别:
for:for和foreach都需要知道集合类型,甚至是集合内部元素类型,所以访问内部元素时,不能实现多态。
Iterator:Iterator是一个接口类型,他不关心集合或者数组类型,并且可以随时删除修改集合元素。当我们需要遍历不同的集合时,我们只需要传递集合的iterator(如test.iterator()),这就是iterator的好处,他不包含任何有关他所遍历的序列的类型信息,能够将遍历序列的操作与序列底层的结构分离。迭代器统一了对容器的访问方式。这也是接口的解耦的最好体现。
4、使用场景:
for:适合一些简单地数组
foreach:适合一些了解集合内部元素类型的集合
Iterator:功能比较强大,对于一些不知道数据类型,或者说需要对不同容器实现同样的遍历时使用,效果很好!
另注:
我们工作中,也会经常用到List
阅读全文
1 0
- JAVA List 迭代遍历案例
- java 迭代list
- Java中集合的迭代(遍历)
- Java集合的迭代(遍历)
- 使用迭代遍历元素Java LinkedList
- java中List集合迭代
- Java-集合 list对象进行指定位置插入、删除、迭代、遍历输出(具体习题讲解)
- Java-集合 list对象进行指定位置插入、删除、迭代、遍历输出(具体习题讲解)
- 迭代遍历
- iterator迭代遍历
- 20171022java学习iterator java 迭代遍历
- 迭代list,map
- Java中Set集合 Iterator迭代遍历数组
- Java 中list集合 通过Iterator方法迭代数组
- List集合存储字符串和自定义对象并遍历(for循环和迭代)
- JAVA LIST 遍历[转]
- JAVA LIST 遍历
- Java list 遍历
- 主线程统计子线程执行时间---countDownLatch
- C语言关键字const用法
- bash:command not found解决方法
- JAVA中去掉空格
- 高性能WEB服务器——之Jetty (N)I/O组件
- JAVA List 迭代遍历案例
- JdbcDaoSupport配合@Repository无法注入DataSource
- LaTeX中文支持(Debian/Ubuntu,pdfLaTeX)
- [RK3288][Android6.0] 调试笔记 --- Activity多次调用finish()引起的Warning
- gulp为项目文件添加版本号
- LibUsbDotNet的简单理解:Read Write(Poll)
- 适配器模式
- ES6解构赋值详解
- hadoop之zookeeper