三種List集合的遍歷方式


首先我們來建一個簡單的實體類:(素材來源於:https://www.cnblogs.com/lianoulay/p/8849747.html

public class News{
    private int id;
    private String title;
    private String author;
    
    public News(int id, String title, String author) {
        super();
        this.id = id;
        this.title = title;
        this.author = author;
    }
    
    public int getId() {
        return id;
    }

    public void setId(int id) {
        this.id = id;
    }

    public String getTitle() {
        return title;
    }

    public void setTitle(String title) {
        this.title = title;
    }

    public String getAuthor() {
        return author;
    }

    public void setAuthor(String author) {
        this.author = author;
    }

}

第一種、最基礎的遍歷方式:for循環,指定下標長度,使用List集合的size()方法,進行for循環遍歷

for( int i = 0 ; i < list.size() ; i++) {
//內部不鎖定,效率最高,但在多線程要考慮並發操作的問題。 System.out.println(list.get(i)); }
import java.util.ArrayList;

public class Demo01 {

  public static void main(String[] args) {

   ArrayList<News> list = new ArrayList<News>();
    
   list.add(new News(1,"list1","a"));
   list.add(new News(2,"list2","b"));
   list.add(new News(3,"list3","c"));
   list.add(new News(4,"list4","d"));
   for (int i = 0; i < list.size(); i++) {
            News s = (News)list.get(i);
            System.out.println(s.getId()+"  "+s.getTitle()+"  "+s.getAuthor());
    }
  }
}

第二種、較為簡潔的遍歷方式:使用foreach遍歷List,但不能對某一個元素進行操作(這種方法在遍歷數組和Map集合的時候同樣適用)

for(String str : list) {
//其內部實質上還是調用了迭代器遍歷方式,這種循環方式還有其他限制,不建議使用。
    System.out.println(str);
}
import java.util.ArrayList;

public class Demo02 {

  public static void main(String[] args) {

    ArrayList<News> list = new ArrayList<News>();
     list.add(new News(1,"list1","a"));
     list.add(new News(2,"list2","b"));
     list.add(new News(3,"list3","c"));
     list.add(new News(4,"list4","d"));

    for (News s : list) {
            System.out.println(s.getId()+"  "+s.getTitle()+"  "+s.getAuthor());
   }
  }
}

第三種、適用迭代器Iterator遍歷:直接根據List集合的自動遍歷

Iterator<String> iter = list.iterator();
while(iter.hasNext()){  
//執行過程中會執行數據鎖定,性能稍差,若在循環過程中要去掉某個元素只能調用iter.remove()方法。
    System.out.println(iter.next());
}
import java.util.ArrayList;

public class Demo03 {

  public static void main(String[] args) {

   ArrayList<News> list = new ArrayList<News>();
    
   list.add(new News(1,"list1","a"));
   list.add(new News(2,"list2","b"));
   list.add(new News(3,"list3","c"));
   list.add(new News(4,"list4","d"));
   
     Iterator<News> iter = list.iterator();
     while (iter.hasNext()) {
            News s = (News) iter.next();
            System.out.println(s.getId()+"  "+s.getTitle()+"  "+s.getAuthor());
    }
  }
}    

上面三種遍歷方式差別不是特別大,在沒有特定的要求時,均可以使用。不過根據不同的特殊情況,要合理選擇方式,來提高開發的效率。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM