zoukankan      html  css  js  c++  java
  • Java 遍历ArrayList的N种方法

    在本博主旧文Java ArrayList类遍历方法基础上添加数组ArrayList对象的“forEach”方法遍历它的用例

    ArrayList集合

    ArrayList集合是程序中最常见的一种集合,它属于引用数据类型(类)。

    在ArrayList内部封装了一个长度可变的数组,当存入的元素超过数组长度时,

    ArrayList会在内存中分配一个更大的数组来存储这些元素,因此可以将ArrayList集合看作一个长度可变的数组。
    下面我们看一下ArrayList源码,从它继承类、实现接口来了解一下它能够支持那些方式的遍历方法

     通过对ArrayList继承类、实现接口深入分析,我们可以得到以下N种遍历方法

    public static void main(String[] args) {
    ArrayList arr= new ArrayList();
    initList(arr);
    testByFor( arr);
    testByForeach( arr);
    testByIterator( arr);
    testByListIterator( arr);
    testByForEach( arr);
    }
    /**
    * 初始化数组 ArrayList
    * @param arr
    */
    private static void initList(ArrayList arr){
    arr.add("Java");
    arr.add("C#");
    arr.add("Php");
    arr.add("Ruby");
    arr.add("Swift");
    arr.add(null);
    }

    方式一:For循环

    /**
    * For循环来遍历数组 ArrayList
    * @param arr
    */
    private static void testByFor(ArrayList arr)
    {
    System.out.println("开始通过for指令来测试ArrayList对象");
    for(int i=0;i<arr.size();i++) {
    System.out.println(arr.get(i));
    }
    System.out.println("开始通过for指令来测试ArrayList对象");
    }

    方式二:增强for循环遍历ArrayList:Foreach

    /**
    * Foreach循环来遍历数组
    * @param arr
    */
    private static void testByForeach(ArrayList arr)
    {
    //foreach输出(jdk>=1.5)
    System.out.println("开始通过Foreach指令来测试ArrayList对象");
    for(Object o:arr) {
    System.out.println(o);
    }
    System.out.println("结束通过Foreach指令来测试ArrayList对象");
    }

    方式三:Iterator:迭代器遍历ArrayList

    /**
    * 正向输出迭代器
    * @param arr
    */
    private static void testByIterator(ArrayList arr)
    {
    System.out.println("开始通过iterator指令来测试ArrayList对象");
    Iterator<String> iterator = arr.iterator();
    while (iterator.hasNext()) {
    System.out.println(iterator.next());
    }
    System.out.println("结束通过iterator指令来测试ArrayList对象");
    }

    方式四:ListIterator:双向迭代器遍历

    /**
    * 双向迭代器
    * @param arr
    */
    private static void testByListIterator(ArrayList arr)
    {
    System.out.println("开始通过ListIterator指令来测试ArrayList对象");
    ListIterator iterator=arr.listIterator();

    //正向输出
    while (iterator.hasNext()) {
    System.out.println(iterator.next());
    }
    System.out.println("结束正向输出ArrayList对象");
    while(iterator.hasPrevious()) {
    System.out.println(iterator.previous());
    }
    System.out.println("结束正向输出ArrayList对象");
    System.out.println("结束通过iterator指令来测试ArrayList对象");
    }

    方式五:ArrayList对象的“forEach”方法遍历
    /**
    * 使用数组ArrayList对象的forEach方法
    * @param arr
    */
    private static void testByForEach(ArrayList arr)
    {
    //foreach输出(jdk>=1.8)
    System.out.println("开始通过Foreach指令来测试ArrayList对象");

    //Lambda表达式访问数组的例子
    arr.forEach(x->System.out.println(x));

    System.out.println("开始通过Foreach指令来测试ArrayList对象");
    }
  • 相关阅读:
    树-构建二叉树
    爬虫-scrapy框架详解(17)
    How to identify the HBA cards/ports and WWN in Linux
    NetBackup常用网络端口整理
    keepalived+MySQL实现高可用
    nginx配置https双向验证(ca机构证书+自签证书)
    systemd设置nginx开机自启动
    Keepalived+Nginx搭建主从高可用并带nginx检测
    windows 挂在EMC 存储
    linux时间同步,ntpd、ntpdate
  • 原文地址:https://www.cnblogs.com/BlogNetSpace/p/15099362.html
Copyright © 2011-2022 走看看