2012-02-28 60 views
8

Tôi biết ý nghĩa của foreach trong lập trình và thời điểm sử dụng. Có một từ khóa foreach trong Java không? Tôi đã cố tìm danh sách từ khóa nhưng chỉ có for chứ không phải foreach.từ khóa foreach trong java?

Trả lời

2

foreach không phải là từ khóa java (IDE nhận ra và đặt vòng lặp "For-each").

2

số Để làm một "foreach", bạn viết for(Type variable : collection){ .... }

(Vâng, tôi biết nó không phải là một Collection, chỉ là một Iterable hoặc một mảng - Tôi chỉ cố gắng để viết rõ ràng)

21

Theo hiểu biết của tôi, Java không có từ khóa foreach (không giống như C# nếu tôi không nhầm lẫn). Bạn có thể tuy nhiên, lặp qua tất cả các yếu tố trong một bộ sưu tập Iterable sử dụng một phiên bản sửa đổi của vòng lặp for:

List<String> list = new ArrayList<String>(); 
... 
for (String str : list) 
{ 
    System.out.println(str); 
} 

Kiểm tra this liên kết để biết thêm thông tin.

+0

Thông tin thêm: Eclipse xác định một mã _foreach_ mẫu, sẽ cung cấp cho bạn loại vòng lặp này khi bạn sử dụng nó ... – quaylar

2

KHÔNG. foreach không phải là từ khóa trong Java.

Vòng lặp foreach là một cú pháp đơn giản để lặp qua mảng hoặc bộ sưu tập — triển khai giao diện java.lang.Iterable.

Trong ngôn ngữ Java, từ khóa for và toán tử : được sử dụng để tạo vòng lặp foreach.

// Java example 
String[] oddBalls = {"one", "three", "five", "seven"}; 

for (String currentBall : oddBalls) 
{ 
    System.out.println (currentBall + " is an odd number."); 
} 

Vòng lặp cơ bản for được mở rộng trong Java 5 để thực hiện lặp qua mảng và các bộ sưu tập khác thuận tiện hơn. Câu lệnh for mới hơn này được gọi là enhanced for hoặc foreach.

3

Không, Không có từ khóa nào như foreach. Và chỉ muốn thêm rằng tăng cường cho vòng lặp đã được thêm vào chỉ để mã hóa tiện lợi. Trình biên dịch đưa nó trở lại định dạng java cũ. Giống như:

List<String> list = new ArrayList<String>(); 
    for (String str : list) 
    { 
     System.out.println(str); 
    } 

sẽ được chuyển đổi sang:

List list = new ArrayList(); 
    String str; 
    for(Iterator iterator = list.iterator(); iterator.hasNext(); System.out.println(str)) 
    { 
     str = (String)iterator.next(); 
    } 
5

Tính đến Java 1.8, Java bây giờ có một vòng lặp foreach ...

package org.galarik.arick; 

import java.util.ArrayList; 
import java.util.List; 

public class ExampleForEach { 

    public static void main(String[] args) { 
     List<String> strings = new ArrayList<>(); 
     strings.add("Mom"); 
     strings.add("Dad"); 
     strings.add("Dad's Java"); 
     strings.add("Mom's Java"); 

     // Original for loop 
     int stringsSize = strings.size(); 
     Object[] oldStrings = strings.toArray(); 
     for(int stringIndex = 0; stringIndex < stringsSize; ++stringIndex) { 
      System.out.println("Original Content: " + oldStrings[stringIndex]); 
     } 

     // For loop, as of Jova 1.5 
     for (String string : strings) { 
      System.out.println("All Content: " + string); 
     } 

     // forEach loop as of Java 1.8 
     strings.stream().forEach((string) -> { 
      System.out.println("For Content: " + string); 
     }); 

     // Using forEach loop to do a filter 
     strings.parallelStream().filter(someString -> someString.contains("Java")) 
       .forEach((someOtherString) -> { 
        System.out.println("Content With Java: " + someOtherString); 
       }); 
    } 
} 
Các vấn đề liên quan