Chúng ta có thể sử dụng cái cũ cho vòng lặp (for(i = 0, j = 0; i<30; i++,j++)
) với hai biến Chúng ta có thể sử dụng cho-mỗi vòng lặp (hoặc tăng cường cho vòng lặp) trong java (for(Item item : items)
với hai biến? Gì cú pháp cho rằng?Có thể sử dụng vòng lặp mới trong Java với hai biến không?
Trả lời
Thật không may, Java chỉ hỗ trợ sơ bộ foreach vòng lặp, được gọi là tăng cường cho vòng lặp. Các ngôn ngữ khác, đặc biệt là các ngôn ngữ FP như Scala, hỗ trợ cấu trúc được gọi là danh sách hiểu (Scala gọi nó là để hiểu) cho phép lặp lồng nhau cũng như lọc các phần tử trên đường đi.
Không bạn không thể. đó là cú pháp đường cho việc sử dụng Iterator. tham khảo here cho một câu trả lời tốt về vấn đề này.
bạn cần có một đối tượng có chứa cả hai biến.
Nó có thể được hiển thị trên một đối tượng Bản đồ ví dụ:
for (Map.Entry<String,String> e: map.entrySet()) {
// you can use e.getKey() and e.getValue() here
}
Vòng lặp foreach giả định rằng chỉ có một tập hợp các sự vật. Bạn có thể làm điều gì đó cho mỗi phần tử cho mỗi lần lặp lại. Bạn muốn nó hoạt động như thế nào nếu bạn có thể lặp qua hai bộ sưu tập cùng một lúc? Điều gì sẽ xảy ra nếu họ có những lenghts khác nhau?
Giả sử rằng bạn có
Collection<T1> collection1;
Collection<T2> collection2;
Bạn có thể viết một wrapper iterable đó lặp trên cả hai và trả về một số loại kết quả sáp nhập.
for(TwoThings<T1, T2> thing : new TwoCollectionWrapper(collection1, collection2) {
// one of them could be null if collections have different length
T1 t1 = thing.getFirst();
T2 t2 = thing.getSecond();
}
Đó là điều gần nhất tôi nghĩ nhưng tôi không thấy nhiều việc sử dụng cho điều đó. Nếu cả hai bộ sưu tập có nghĩa là để được lặp lại với nhau, nó sẽ được đơn giản hơn để tạo ra một Collection<TwoThings>
ở nơi đầu tiên.
Ngoài việc lặp song song, bạn cũng có thể muốn lặp lại tuần tự. Có những triển khai cho điều đó, ví dụ: Của Guava Iterables.concat()
Câu trả lời đơn giản "Không" đã được đưa ra. Nhưng bạn có thể thực hiện lấy hai vòng lặp làm đối số và trả về các cặp của các phần tử đến từ hai trình vòng lặp. Ghép nối thành một lớp với hai trường. Bạn sẽ phải thực hiện chính mình, hoặc nó có thể tồn tại trong một số commache apache hoặc lib tương tự.
Iterator mới này có thể được sử dụng trong vòng lặp foreach.
Sau đây nên có tác dụng tương tự (hiệu suất) mà bạn đang cố gắng để đạt được:
List<Item> aItems = new List<Item>();
List<Item> bItems = new List<Item>();
...
Iterator aIterator = aItems.iterator();
Iterator bIterator = bItems.iterator();
while (aIterator.hasNext() && bIterator.hasNext()) {
Item aItem = aIterator.next();
Item bItem = bIterator.next();
}
- 1. Có thể sử dụng tên biến động trong SASS mỗi vòng lặp không?
- 2. Có thể khai báo hai biến của các kiểu khác nhau trong vòng lặp for không?
- 3. bash shell script hai biến trong vòng lặp
- 4. Đối với các biến thể vòng lặp trong javascript
- 5. GNU Make cho vòng lặp với hai biến
- 6. Hai biến trong vòng lặp 'for' trong C
- 7. Perl, sử dụng biến từ bên trong Vòng lặp while nằm ngoài vòng lặp?
- 8. Tôi có thể tránh tên biến đối tượng trong vòng lặp ng-lặp không?
- 9. Khai báo hai biến trong vòng lặp for
- 10. Đối với vòng lặp (người mới)
- 11. Có tham số nào tôi có thể sử dụng trong Java hoạt động với tất cả các vòng lặp cho mỗi vòng không?
- 12. Sử dụng biến ngoài vòng lặp while (phạm vi)
- 13. lớp mới trong vòng lặp for
- 14. Sử dụng for-each vòng lặp trong java
- 15. Java: vòng lặp trống sử dụng bao nhiêu thời gian?
- 16. jQuery mỗi vòng lặp - sử dụng các biến
- 17. Có cách nào tôi có thể in mảng String mà không sử dụng cho vòng lặp?
- 18. Sử dụng sudo với vòng lặp for
- 19. Làm thế nào tôi có thể tham gia hai băm trong Perl mà không cần sử dụng vòng lặp?
- 20. Hai hoạt động trong một vòng lặp so với hai vòng lặp thực hiện cùng một hoạt động một vòng lặp
- 21. Đóng trên biến vòng lặp trong C#
- 22. có vòng lặp và vòng lặp trong con rối không?
- 23. Java có thể tối ưu hóa "đột biến" các hoạt động BigInteger trong các vòng lặp không?
- 24. HLSL cho vòng lặp với Mô hình Shader 2.0: Lỗi X3511 không thể hủy vòng lặp
- 25. Có thể sử dụng Relic mới với GAE/J không?
- 26. đóng trong vòng lặp for - gọi lại với biến vòng lặp làm tham số
- 27. Có một trình vòng lặp có thể ghi trong Java không?
- 28. Có thể sử dụng GStreamer không có vòng lặp chính GLib không?
- 29. Bạn có thể lặp qua một giá trị enum có thể bằng cách sử dụng vòng lặp Qt foreach không?
- 30. Android: Sử dụng findViewById() với chuỗi/trong vòng lặp
Nó không phải là một 'mới cho loop', nó là cơ bản một vòng lặp foreach. Bạn không thể. – MightyPork
@MightyPork Nó được tăng cường cho vòng lặp *. –
tên thay đổi mục đích và sử dụng của nó như thế nào? nó tương đương với vòng lặp foreach. – MightyPork