2013-02-01 35 views

Trả lời

8

ổi của Iterators.get(Iterator<T>, int) có thể giúp

Tiến iterator vị trí + 1 lần, trở về phần tử ở vị trí positionth.

+0

Tốt, chính xác những gì tôi đang tìm kiếm –

+5

Hoặc có thể sử dụng 'Iterables.get (Iterable, int)' trực tiếp trên 'Bộ sưu tập'. –

0

EDIT: Bỏ qua điều này, đọc qua một phần của câu hỏi.


Bạn có thể đi như vậy:

for(int counter = 0; counter < max; counter++) 
    current = iterator.next(); 

Sau đó, hiện tại sẽ là yếu tố max-thứ của trật tự gây ra bởi các iterator.

+0

Vui lòng đọc câu hỏi và lưu ý "Tôi biết có thể lặp lại trong khi đếm qua các phần tử Iterator" –

+0

Xin lỗi, phải đọc qua điều đó. Giả sử bộ sưu tập không nằm trong cấu trúc dữ liệu được sắp xếp (như danh sách avl hoặc bỏ qua), tìm kiếm thư viện của bên thứ ba sẽ không thực sự giúp bạn, nó sẽ luôn là tìm kiếm thời gian tuyến tính. Việc xây dựng một cấu trúc dữ liệu như vậy sẽ mất thời gian siêu tuyến tính, do đó, trừ khi bạn đang lập kế hoạch thực hiện điều đó nhiều lần (nghĩa là tìm kiếm n cho phần tử thứ m), điều đó sẽ đắt hơn chỉ làm theo cách tầm thường. –

+0

Vâng, tất nhiên đó là tìm kiếm tuyến tính. Nó giúp tôi không viết mã mới và có thể dựa vào thư viện của bên thứ ba đã được chứng minh. –

0

Một ví dụ của việc sử dụng Iterators.get(Iterator iterator, int position) để có được những yếu tố thứ 3 trong myCollection:

com.google.common.collect.Iterators.get(myCollection.iterator(), 3); 

đã sử dụng tên đầy đủ trên trong trường hợp nó là cần thiết, ví dụ trong chế độ xem Hiển thị của Eclipse.

Các vấn đề liên quan