遍历Collection集合中的6种方法

下面的代码演示了遍历Collection集合的6种方法,注意Collection集合的遍历远不止于增强for循环和迭代器两种。

Java代码如下所示:

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.Enumeration;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Stack;

public class ListTest {

    public static void main(String[] args) {       
        String[] s="how are you I am fine".split(" ");
        List<String> list = Arrays.asList(s);
        /**
         * 第一种方法用增强for循环。(这里List之所以能用增强for循环其原因在于它实现了Iterable接口)
         * 使用for循环的前提是带泛型的list
         */
        for(String str:list){
            System.out.print(str+" ");
        }
        System.out.println();
        System.out.println("************");

        List listone = new ArrayList();
        listone.add("Java疯狂讲义");
        listone.add("Java EE企业应用实战");
        listone.add("数据结构");

        //以下for不能遍历testone中的元素,for循环遍历时一定是泛型
//        for(String str1:listone){
//            System.out.print(str1+" ");
//        }

        /**
         * 第二种方法用Iterator
         */
        Iterator<String> it = list.iterator();
        while(it.hasNext()){
            String next = it.next();
            System.out.print(next+" ");
        }
        System.out.println();
        System.out.println("************");
        /**
         * 第三种方法主要针对LinkedList。因为LinkedList 既有栈(stack)的特点,又有队列(Queue)
         * 的特点。所以遍历LinkedList中的元素。根据stack和queue,可以进行相关的遍历。
         * 遍历的方法如下所示:
         */
        //Using linkedList as a stack
        LinkedList<String> list2=new LinkedList<>(list);//创建一个LinkeList包含list中的全部元素。
        while(!list2.isEmpty()){
            System.out.print(list2.removeFirst()+" ");
        }
        System.out.println();
        System.out.println("************");
        /**
         * Using linkedList as a queue
         */
        LinkedList<String> list3=new LinkedList<>(list);
        while(list3.peek() != null){
            System.out.print(list3.poll()+" ");
        }
        System.out.println();
        System.out.println("************");
        /**
         * 第四种方法把所有的Collection都可以当做Enumeration进行遍历
         * Collections.enumeration(c)
         */
        ArrayList<String> list4=new ArrayList<>(list);
        Enumeration<String> e = Collections.enumeration(list4);
        while(e.hasMoreElements()){
            System.out.print(e.nextElement()+" ");
        }
        /**第五种方法
         * 当然还有其他方法如:
         */
        System.out.println();
        System.out.println("************");
        for(int i=0;i<list4.size();i++){
            System.out.print(list4.get(i)+" ");
        }
        System.out.println();
        System.out.println("************");
        /**第六种方法:
         *再如:
         */
        while(!list4.isEmpty()){
            int index=0;
            System.out.print(    list4.remove(index++)+" ");
        }
        /**
         * 备注:在List接口中的所有实现类中最常用的是ArrayList   LinkedList  
         * ArraList比LinkedList的速度快,一般情况下选中ArrayList的情况比LinkedList多。
         * 在ArrayList源码中有一个serialVersionUID,这个数字保证了,
         * 写入文件(ObjectOutputStream.writeObject(Object))
         * 读取文件(ObjectInputStream.readObject())可以顺利进行,
         * 并且指明这个数字,可以保持各个版本的兼容性。有利于文件传输。
         */   
    }
}
输出结果如下:
how are you I am fine 
************
how are you I am fine 
************
how are you I am fine 
************
how are you I am fine 
************
how are you I am fine 
************
how are you I am fine 
************
how are you I am fine 
  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值