Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Có bao nhiêu cách để lấy phần tử của Collection trong Java?

Có 3 cách chính để duyệt/retrieve phần tử từ Collection:

1. Vòng lặp for-each (Enhanced for loop) - Phổ biến nhất

Cú pháp gọn, đọc dễ, áp dụng cho mọi loại Collection.

ArrayList<String> list = new ArrayList<>();
list.add("JavaFX"); list.add("Java"); list.add("WebGL");

for (String e : list) {
    System.out.println(e);
}

2. Iterator / ListIterator - Linh hoạt, cho phép xóa khi duyệt

  • Iterator: Chỉ duyệt tiến (forward).
  • ListIterator: Duyệt 2 chiều (forward/backward), cho phép add/set/remove.
import java.util.*;

Iterator<String> it = list.iterator();
while (it.hasNext()) {
    System.out.println(it.next());
}

// ListIterator - duyệt ngược
ListIterator<String> lit = list.listIterator();
while (lit.hasNext()) lit.next(); // Đi đến cuối
while (lit.hasPrevious()) {
    System.out.println(lit.previous()); // In ngược
}

3. Enumeration - Cũ (Legacy), chỉ cho Vector/Hashtable

import java.util.*;

Vector<Integer> vec = new Vector<>();
vec.add(1254); vec.add(4587); vec.add(5211);

Enumeration<Integer> en = vec.elements();
while (en.hasMoreElements()) {
    System.out.println(en.nextElement());
}

So sánh nhanh

CáchƯu điểmNhược điểmDùng khi
for-eachNgắn gọn, an toàn, dễ đọcKhông xóa được khi duyệtChỉ đọc, in ra
IteratorXóa được khi duyệt (it.remove())Verbose hơnCần xóa element
ListIteratorDuyệt 2 chiều, add/set/removeChỉ cho ListCần thao tác phức tạp trên List
EnumerationLegacy APIChỉ Vector/Hashtable, ít tính năngCode cũ, maintain

Java 8+: Cũng có thể dùng stream() / forEach():

list.forEach(System.out::println);
list.stream().filter(s -> s.startsWith("J")).forEach(System.out::println);