Tôi có một vòng lặp foreach trong Java (phiên bản đơn giản ở đây)Refactor foreach để cho vòng lặp
List<String> names = getNames();
for(String name:names) {
doSomething(name);
}
Có một cách tự động để cấu trúc lại này cho một người for
loop truyền thống?
tôi biết làm thế nào để làm điều đó bằng tay
List<String> names = getNames();
for(int i=0; i<names.size(); i++) {
String name = names.get(i);
doSomething(name);
}
Như bạn thấy, có một chút gõ cần thiết trong for
tuyên bố bản thân cũng như giới thiệu các biến name
một lần nữa và gán cho nó giá trị names.get(i)
. Tổng cộng, chỉnh sửa thủ công quá dễ bị lỗi đối với tôi.
Tại sao tôi muốn thực hiện việc này? Tôi phải sửa lỗi và sửa lỗi là bắt đầu từ chỉ mục 1 thay vì chỉ mục 0 và kết thúc tại chỉ mục n-1 thay vì kết thúc (tiếc là tôi không thể khắc phục đầu vào ngay lập tức, tôi cần phải chờ cập nhật thư viện nếu điều đó được công nhận là lỗi).
Tôi đã thử gì? Tôi nhấp chuột phải vào từ khóa for
và nhấp vào "Refactor", nhưng theo như tôi có thể nhận được từ các mục trình đơn ngữ cảnh, không có gì trong đó sẽ làm công việc cho tôi.
Tại sao tôi nghĩ điều này về lý thuyết có thể hoạt động? Bởi vì chức năng tương tự tồn tại trong Resharper cho Visual Studio (C#).
FYI: Tôi đang sử dụng Eclipse Luna SR 2 (4.4.2)
Có thể giới thiệu một phương pháp mới thay vì 'getNames' trả về danh sách mà không đầu tiên và mục cuối cùng? –
@DevBlanked: tất nhiên về mặt kỹ thuật sẽ có thể, nhưng điều đó không có nghĩa là tôi viết một vòng lặp sao chép tất cả mọi thứ ngoại trừ mục đầu tiên và mục cuối cùng? –
không thực sự, bạn có thể xóa mục đầu tiên và cuối cùng cung cấp chỉ mục của họ, https://docs.oracle.com/javase/7/docs/api/java/util/List.html#remove(int). –