Tôi tự hỏi làm thế nào để sử dụng trình lặp trong một lớp Stack. Làm thế nào để tạo một lớp lặp cho nó?Làm cách nào để lặp lại một ngăn xếp trong Java
Trả lời
Chỉ cần có được Iterator
qua iterator()
:
Stack<YourObject> stack = ...
Iterator<YourObject> iter = stack.iterator();
while (iter.hasNext()){
System.out.println(iter.next());
}
Hoặc cách khác, nếu bạn chỉ muốn in tất cả chúng sử dụng enhanced-for loop:
for(YourObject obj : stack)
{
System.out.println(obj);
}
Nếu không có iterator - trong khi {... currentSymbol = stack.pop(); ...} –
@HiteshSahu Sau khi chạy (stack.isEmpty()!) mã của bạn, 'Stack' sẽ trống khi' pop() 'loại bỏ phần đầu của ngăn xếp. – Baz
Đồng ý. Tôi đã xây dựng một trình biên dịch và tôi đã sử dụng biến thể này để phân tích cú pháp syntex. –
Stack<Object> myStack; // obtain your Stack object
Iterator iterator = myStack.iterator();
while (iterator.hasNext()) {
Object object = iterator.next();
}
Cũng vui lòng viết một số giải thích, mã này làm gì. – Lucifer
Bạn có thể làm:
for (Iterator<MyObject> iterator = stack.iterator(); iterator.hasNext();) {
MyObject myObject = iterator.next();
myObject.doStuff();
}
Có vẻ như bạn đã triển khai một lớp ngăn xếp tùy chỉnh. "Cái gì đó" của bạn nên triển khai giao diện Iterable
và cung cấp việc triển khai Iterator
.
public class MySomethingThatIsAStack<T> implements Iterable<T> {
@Override
public Iterator<T> iterator() {
return new Iterator<T>() {
// your implementation of the iterator, namely the
// methods hasNext, next and remove
}
}
}
I am working on something that is implementing a stack using queues
Điều đó có nghĩa bạn không sử dụng Java Stack
thực hiện? http://docs.oracle.com/javase/6/docs/api/java/util/Stack.html Nó dựa trên Vector không phải hàng đợi.
Nếu bạn đang sử dụng triển khai Java Stack
, bạn có thể sử dụng trình lặp như các câu trả lời khác. Nếu không, nếu đó là tùy chỉnh Stack
, bạn phải triển khai giao diện Iterable
. Và sau đó bạn có thể làm một cái gì đó giống như câu trả lời khác.
- 1. Tôi không hiểu lỗi tràn ngăn xếp với DispatchMessageW lặp lại trong ngăn xếp cuộc gọi
- 2. GCC - Cách sắp xếp lại ngăn xếp?
- 3. C#: làm cách nào để ẩn một phương thức khỏi ngăn xếp ngăn xếp?
- 4. Làm cách nào để sao chép một ngăn xếp trong Java?
- 5. Làm thế nào để một cách lặp lại sắp xếp hợp nhất?
- 6. Tại sao log4j vô hiệu hóa ngăn xếp ngăn xếp sau (rất nhiều) lặp lại của cùng một ngoại lệ?
- 7. Làm cách nào để tôi có một ngoại lệ và giữ lại dấu vết ngăn xếp?
- 8. Làm thế nào để xác định một ngăn xếp char?
- 9. Làm cách nào để xóa các mục menu của ngăn xếp ngăn xếp?
- 10. Trong Java, làm cách nào để lặp lại các hằng số của một giao diện?
- 11. Làm cách nào để lặp lại một lớp tạo của tôi trong Java?
- 12. Tôi làm cách nào để ngăn các tab sắp xếp lại bên trong JetBrains IntelliJ?
- 13. Làm cách nào để tạo ngăn xếp điều hướng chung?
- 14. Lỗi tràn ngăn xếp Java - cách tăng kích thước ngăn xếp trong Eclipse?
- 15. Làm cách nào để gỡ lỗi 'Phát hiện ngăn xếp ngăn xếp'?
- 16. Làm thế nào để tôi nắm bắt và phục hồi từ tràn ngăn xếp trong Java?
- 17. Làm cách nào để bật lại ngăn xếp cho Hoạt động với nhiều Phân đoạn?
- 18. Làm thế nào để thiết kế một ngăn xếp monadic?
- 19. Làm cách nào để căn chỉnh ngăn xếp?
- 20. Làm thế nào để tránh tràn ngăn xếp trong Haskell?
- 21. Làm thế nào để ngăn chặn lặp lại trong chức năng jQuery?
- 22. Làm cách nào để ngăn các div này trùng lặp?
- 23. Làm cách nào để lặp lại từ điển Python, được sắp xếp theo giá trị?
- 24. đợi Sắp xếp lại trong ThreadPoolExecutor Java
- 25. Làm thế nào để ngăn chặn tràn ngăn xếp bằng cách theo dõi kích thước ngăn xếp?
- 26. Làm thế nào để ngăn chặn các giá trị lặp lại trong bảng iReport-3.6.7?
- 27. Làm cách nào để tạo một mảng trong C++ trên heap thay vì ngăn xếp?
- 28. Hiển thị lại ngăn xếp của Android
- 29. Làm thế nào để tràn ngăn xếp mà không cần đẩy khung ngăn xếp mới?
- 30. Có cách nào để kết xuất một dấu vết ngăn xếp mà không ném một ngoại lệ trong java?
Iterator công iterator() { \t \t \t} –