天天看點

ArrayList集合周遊的八種方式

ArrayList集合周遊的七種方式

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Iterator;
import java.util.List;
import java.util.ListIterator;

public class Ergodic {
  public static void main(String[] args) {
    
    System.out.println("ArrayList集合的周遊");
    List list = new ArrayList();
    list.add(1);
    list.add(2);

    
    System.out.println("1.for循環:");
    for(int i = 0; i<list.size(); i++) {
      System.out.println(list.get(i));
    }

    
    System.out.println("2.foreach循環:");
    for(Object l : list) {
      System.out.println(l);
    }

    
                System.out.println("3.連結清單變為數組内容後周遊:");
                Integer[] inteArray = new Integer[list.size()];
                list.toArray(inteArray);
                for(int inte : inteArray) {
                    System.out.println(inte);
                }


    System.out.println("4.while疊代器周遊:");
    Iterator iterator1 = list.iterator();
    while(iterator1.hasNext()) {// hasNext()方法:判斷該指針所指位置是否有元素
      System.out.println(iterator1.next());// next()方法:1.擷取該指針指向的元素 2.并把指針指向下一個元素(即指針後移一位)
    }


    System.out.println("5.for疊代器周遊:");
    //該處将while改為for循環周遊,可以當周遊完後便釋放疊代器對象,更節省記憶體
    for(Iterator iterator3 = list.iterator(); iterator3.hasNext() ;) {
      System.out.println(iterator3.next());
    }

    
    System.out.println("6.1 ListIterator疊代器向後周遊:");
    ListIterator iterator2 = list.listIterator();
    while(iterator2.hasNext()) {// 将list集合先從頭向後周遊,指針指向最後
      System.out.println(iterator2.next());
    }


    System.out.println("6.2 ListIterator疊代器向前周遊");
    while(iterator2.hasPrevious()) {// 将list集合從末尾先前周遊,指針指到第一個元素
      System.out.println(iterator2.previous());
    }   
  }
}      

對于集合的周遊,推薦下面代碼,節省記憶體.

for(Iterator iterator3 = list.iterator(); iterator3.hasNext() ;) {

            System.out.println(iterator3.next());

        }

還有對于集合的foreach周遊集合,其實就是反編譯後就是上面的代碼.若想節省記憶體還是推薦上面代碼. 

Java8可以使用Stream API來周遊集合

// List集合周遊的第八種方式
list.stream().forEach(System.out::println);      

集合反編譯代碼

// Decompiled by Jad v1.5.8e2. Copyright 2001 Pavel Kouznetsov.
// Jad home page: http://kpdus.tripod.com/jad.html
// Decompiler options: packimports(3) fieldsfirst ansi space 
// Source File Name:   Ergodic.java

import java.io.PrintStream;
import java.util.*;

public class Ergodic
{

  public Ergodic()
  {
  }

  public static void main(String args[])
  {
    
    System.out.println("ArrayList集合的周遊");
    List list = new ArrayList();
    list.add(Integer.valueOf(1));
    list.add(Integer.valueOf(2));


    System.out.println("1.for循環:");
    for (int i = 0; i < list.size(); i++)
      System.out.println(list.get(i));

    System.out.println("2.foreach循環:");
    Object l;
    for (Iterator iterator = list.iterator(); iterator.hasNext(); System.out.println(l))
      l = iterator.next();

    System.out.println("3.連結清單變為數組内容後周遊:");
    Integer inteArray[] = new Integer[list.size()];
    list.toArray(inteArray);
    Integer ainteger[];
    int j1 = (ainteger = inteArray).length;
    for (int i1 = 0; i1 < j1; i1++)
    {
      int inte = ainteger[i1].intValue();
      System.out.println(inte);
    }

    System.out.println("4.while疊代器周遊:");
    for (Iterator iterator1 = list.iterator(); iterator1.hasNext(); System.out.println(iterator1.next()));

    System.out.println("5.for疊代器周遊:");
    for (Iterator iterator3 = list.iterator(); iterator3.hasNext(); System.out.println(iterator3.next()));

    System.out.println("6.1 ListIterator疊代器向後周遊:");
    ListIterator iterator2;
    for (iterator2 = list.listIterator(); iterator2.hasNext(); System.out.println(iterator2.next()));

    System.out.println("6.2 ListIterator疊代器向前周遊");
    for (; iterator2.hasPrevious(); System.out.println(iterator2.previous()));
  }
}      

數組

System.out.println("數組的周遊");
    int[] a = new int[] {1,2};


    System.out.println("1.for循環:");
    for (int i = 0; i < a.length; i++) {
      System.out.println(a[i]);
    }


    System.out.println("2.foreach循環:");
    for(int b : a) {
      System.out.println(b);
    }

    
    System.out.println("3.Arrays工具類:");
    System.out.println(Arrays.toString(a));      

數組反編譯代碼

System.out.println("數組的周遊");
    int a[] = {
      1, 2
    };
    System.out.println("1.for循環:");
    for (int i = 0; i < a.length; i++)
      System.out.println(a[i]);

    System.out.println("2.foreach循環:");
    int ai[];
    int k = (ai = a).length;
    for (int j = 0; j < k; j++)
    {
      int b = ai[j];
      System.out.println(b);
    }

    System.out.println("3.Arrays工具類:");
    System.out.println(Arrays.toString(a));