Thật không may, bạn không thể. Những gì bạn đang yêu cầu về cơ bản là số học con trỏ C/C++, và không có điều như vậy trong Java.
Tuy nhiên, nếu bạn sẵn sàng sử dụng giao diện khác, bạn có thể có một số may mắn với Commons Primitives ArrayByteList
. Nó không phải là một đơn giản List<Byte>
, vì nó được hỗ trợ bởi một mảng thực sự của byte
s - do đó không có phí bộ nhớ do sử dụng các đối tượng Byte
. Bạn vẫn sẽ có một số chi phí đối tượng, nhưng đó là chấp nhận được trong các trường hợp thực tế.
Quan trọng nhất, nó hỗ trợ lát qua phương pháp ArrayByteList.subList()
, trong đó không tạo bản sao. Bạn có thể kiểm tra source code, lát được thực hiện như một tham chiếu đến mảng ban đầu cộng với hai điểm đánh dấu cho vị trí bắt đầu và kết thúc.
Tuy nhiên, hãy nhớ rằng tránh sao chép có nghĩa là các thay đổi đối với lát được phản ánh trong mảng ban đầu. Đó có thể là những gì bạn muốn, nhưng vẫn rất cẩn thận - đặc biệt là nếu bạn không đến từ một nền C/C++, nơi mà những điều này là thực tế phổ biến.
Nguồn
2014-12-15 20:46:27
Thật không may, bạn không thể. Có lẽ đó là một tùy chọn: http: //fastutil.di.unimi.nó/docs/it/unimi/dsi/fastutil/bytes/ByteList.html # subList (int, int)? –
@LyubomyrShaydariv tiện ích đó được hỗ trợ bởi một 'Danh sách', xem câu trả lời của tôi. –
@StefanoSanfilippo nó không được hỗ trợ bởi một 'Danh sách' - http://grepcode.com/file/repo1.maven.org/maven2/it.unimi.dsi/fastutil/6.5.1/it/unimi/dsi/ fastutil/bytes/ByteArrayList.java - nó có nội bộ 'byte [] a', không phải' Byte [] a'. Fastutil được thiết kế cho các bộ sưu tập và bản đồ nguyên thủy hiệu quả. –