2011-01-10 26 views
6

Trong Objective-C Cocoa chúng ta có lớp NSIndexSet lưu trữ một loạt các chỉ mục duy nhất một cách hiệu quả bằng cách giữ một dãy các dãy. Ví dụ. các thiết lập 1, 2, ... 30, 57 sẽ được lưu trữ như các phạm vi 1-30 và 57 chứ không phải là một mảng gồm 32 số. Điều này tạo điều kiện cho các lựa chọn lớn được lưu trữ một cách đơn giản và nhanh chóng. Ví dụ: nếu tất cả các hàng nằm trong khoảng từ 1 đến một triệu trong một bảng được chọn, tập chỉ mục sẽ thu gọn thành một phạm vi nhỏ và nhanh chóng so sánh và giao nhau với.Có một IndexSet và một lớp Range cho Java không?

Thật không may điều này hóa ra lại khá khó khăn với Google. Có một lớp tương đương cho Java không?

+1

Kiểm tra lớp BitSet. Không phải là phạm vi exacly như bạn thể hiện ở đây nhưng nó có thể làm các trick cho bạn. –

Trả lời

1
+0

IntRangeSet từ PCJ dường như phù hợp với hóa đơn. Cảm ơn! –

3

Có là commons Apache IntRange

+0

Trên thực tế cũng có các loại phạm vi khác http://commons.apache.org/lang/api-2.5/index.html?org/apache/commons/lang/math/Range.html – Navi

0

Chắc chắn không phải là cuối cùng và không kém, có một Range class trong thư viện ổi. Điều này article hiện một công việc tốt đẹp của minh họa cách bạn có thể sử dụng nó.

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