Có trường hợp sử dụng cho phương thức size()
trên lớp java.util.BitSet
không?Lý do cho phương thức size() của BitSet là gì?
Ý tôi là - JavaDoc cho biết rõ ràng nó phụ thuộc vào triển khai thực hiện, nó trả về kích thước của bộ nhớ trong long[]
trong bit. Từ những gì nó nói, người ta có thể kết luận rằng bạn sẽ không thể để thiết lập một chút với chỉ số cao hơn size()
, nhưng đó là không đúng sự thật, các BitSet
có thể phát triển tự động:
BitSet myBitSet = new BitSet();
System.out.println(myBitSet.size()); // prints "64"
myBitSet.set(768);
System.out.println(myBitSet.size()); // prints "832"
Trong mỗi cuộc gặp gỡ duy nhất với BitSet
tôi đã có trong cuộc sống của tôi, tôi luôn luôn muốn sử dụng length()
vì đó một trả về kích thước hợp lý của BitSet
:
BitSet myBitSet = new BitSet();
System.out.println(myBitSet.length()); // prints "0"
myBitSet.set(768);
System.out.println(myBitSet.length()); // prints "769"
Mặc dù tôi đã được lập trình Java trong 6 năm trở lại đây, hai phương pháp là luôn luôn đánh giá cao gây nhầm lẫn cho tôi. Tôi thường trộn chúng lại và sử dụng sai một cách ngẫu nhiên, bởi vì trong đầu của tôi, tôi nghĩ về BitSet
là một thông minh Set<boolean>
nơi tôi muốn sử dụng size()
.
Giống như nếu ArrayList
có length()
trả về số lượng phần tử và size()
trả lại kích thước của mảng cơ bản.
Hiện tại, có bất kỳ trường hợp sử dụng nào cho phương pháp size()
tôi bị thiếu không? Nó có hữu ích trong bất kỳ cách nào? Có ai từng sử dụng nó cho bất cứ điều gì? Nó có thể là quan trọng đối với một số twiddling bit bằng tay hoặc một cái gì đó tương tự?
EDIT (sau khi một số nghiên cứu nhiều hơn nữa)
tôi nhận ra BitSet
đã được giới thiệu trong Java 1.0 trong khi khuôn khổ với hầu hết các lớp học chúng tôi sử dụng bộ sưu tập được giới thiệu trong Java 1.2. Vì vậy, về cơ bản có vẻ như với tôi rằng size()
được lưu giữ vì lý do cũ và không có sử dụng thực sự cho nó. Các lớp Collection mới không có các phương thức như vậy, trong khi một số các phương thức cũ (ví dụ: Vector
) làm.
Dường như tôi đã đi đúng hướng. Tôi sẽ đợi thêm một chút nếu có ai đó sử dụng cách mạng cho phương pháp này, nhưng tôi đoán dấu tích sẽ là của bạn. Đó là một sự xấu hổ họ đã không từ chối nó. Nó sẽ giúp tôi tiết kiệm thời gian quý báu khi sử dụng sai. –