2013-02-05 41 views
7

Tôi thích sử dụng một vòng lặp for với nguyên tắc iterator, nhưLàm cách nào để xác định phần tử cuối cùng khi sử dụng trình lặp?

for(String s : collectionWithStrings) 
    System.out.println(s + ", "); 

Câu hỏi: Làm thế nào tôi có thể xác định các yếu tố hiện nay là người cuối cùng?

Với chỉ mục riêng như int = 0; i < collection.size(); i++, điều này là có thể với i == collection.size() - 1, nhưng không tốt. Có thể xác định phần tử cuối cùng bằng một trình lặp cho ví dụ trên không?

+0

số Nếu bạn muốn kiểm tra vị trí, chuyển sang syle khác. – leonbloy

+0

Tăng cường cho vòng lặp là khá chuyên ngành. Công việc của nó là cung cấp một biểu diễn rất ngắn, đơn giản cho một số trường hợp rất đơn giản, nhưng thường xuyên xảy ra. Nếu bạn gặp khó khăn khi nhận được những gì bạn muốn từ nó, không sử dụng nó. –

Trả lời

8

Thực tế, phương thức Iterator#hasNext trả về một boolean xác định nếu trình vòng lặp sẽ trả về một phần tử khác với phương thức next.

lặp của bạn có thể được đặt như thế này:

Iterator<String> iterator = collectionWithString.iterator(); 
while(iterator.hasNext()) { 
    String current = iterator.next(); 
    // if you invoke iterator.hasNext() again you can know if there is a next element 
} 
+0

Có, nhưng bạn không được cấp quyền truy cập vào trình vòng lặp với vòng lặp 'for' được hiển thị ở trên. –

+0

@DuncanJones Có, nhưng OP cũng đã hỏi _ Có thể xác định yếu tố cuối cùng với một trình lặp cho ví dụ trên không? _ – Gamb

+0

Xin lỗi, lỗi của tôi! –

3

Đó là không thể với một enhanced for loop mà không duy trì truy cập của riêng bạn. Thành thật mà nói, đây là yếu tố quyết định của tôi khi tôi chọn loại vòng lặp để sử dụng.

Khi sử dụng Iterator, người dùng có quyền truy cập vào phương pháp hasNext() sẽ trả về false khi bạn xử lý phần tử cuối cùng.

+0

Cảm ơn bạn. Đây cũng là yếu tố quyết định của tôi đối với loại vòng lặp. Khi nó đứng, nó sẽ là yếu tố quyết định của tôi cho tương lai. :) –

5

Chỉ cần sử dụng phương pháp hasNext.

if(!iterator.hasNext()) { 
    // this is the last element 
} 

Thông thường, chúng ta lặp sử dụng một Iterator như vậy:

while(iterator.hasNext()) { 
    Object obj = iterator.next(); 
} 
Các vấn đề liên quan