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,使用原理和上面是一样的,就简单地拿foreach聚个例子:
package test.java;

import java.util.ArrayList;
import java.util.List;

public class LIstTest {
    publicstatic void main(String[] args) {
       LIstTest a =new LIstTest();
      a.setName("张三");
       LIstTest b =new LIstTest();
      b.setName("李四");
       List test =new ArrayList();
      test.add(a);
      test.add(b);
      //foreach
       for(LIstTestt : test){
         System.out.println(t.getName());
       }
    }
   
    privateString name;
    private intage;
         
    publicString getName() {
       returnname;
    }
    public voidsetName(String name) {
       this.name =name;
    }
    public intgetAge() {
       returnage;
    }
    public voidsetAge(int age) {
       this.age =age;
    }
   
}

参考博客:http://blog.csdn.net/iamkila/article/details/7266890
原创粉丝点击