2009-06-09 35 views
18

Có một loại bộ sưu tập Java nào mà thứ tự tìm nạp của tôi là ngẫu nhiên không? Ví dụ, tôi đặt số nguyên 1, 2, 3 vào bộ sưu tập và khi tôi cố gắng in tất cả các kết quả có thể là "1 2 3", "3 2 1" hoặc "1 3 2"?Bộ sưu tập ngẫu nhiên Java

Trả lời

43

Nếu bạn chỉ muốn một chuỗi ngẫu nhiên bạn có thể sử dụng Collections.shuffle

List<Integer> list = new LinkedList(); 
    //Add elements to list 
    Collections.shuffle(list); 
+5

Đây là một trường hợp mà bạn có thể muốn sử dụng 'ArrayList' - từ mô tả thuật toán bạn muốn truy cập ngẫu nhiên nhanh. –

5

Lấy bộ sưu tập bình thường và trộn nó, sau đó lặp lại nó theo cách thông thường.

Bạn có thể sử dụng java.util.Collections.shuffle(List<T>) để thực hiện xáo trộn.

+1

Vâng, câu trả lời đầu tiên của bạn làm tôi bối rối vì tôi không biết về java.util.Collections. Tôi là một người đàn ông mới, bạn biết đấy. – Sefler

2

Chỉ shuffle bộ sưu tập.

Nếu bộ sưu tập phải nghỉ để bạn có thể truy cập vào các yếu tố tại chỉ số ngẫu nhiên, nhưng sau đó bạn phải theo dõi của những người thân mà bạn đã sử dụng trước đó (có lẽ, nó phụ thuộc vào ứng dụng của bạn), và điều này có thể rất không hiệu quả. Một giải pháp tốt hơn, nếu bộ nhớ là không có trở ngại, sẽ chỉ là tạo một bản sao và trộn nó.

1

Không phải là tôi biết. Bạn luôn có thể đặt các giá trị trong danh sách và sử dụng Collections.shuffle để đặt các giá trị vào một thứ tự ngẫu nhiên.

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