CFSDN nhấn mạnh vào giá trị tạo ra nguồn mở và chúng tôi cam kết xây dựng nền tảng chia sẻ tài nguyên để mọi nhân viên CNTT có thể tìm thấy thế giới tuyệt vời của bạn tại đây.
Bài viết blog CFSDN này giải thích các quy tắc mở rộng của ArrayList và HashMap được tác giả sưu tầm và biên soạn. Nếu các bạn quan tâm đến bài viết này thì nhớ like nhé.
1、danh sách mảng。
Kích thước mặc định là 10.
?
1
2
3
4
|
/**
* dung lượng ban đầu mặc định.
*/
riêng tư
tĩnh
cuối cùng
số nguyên
dung lượng mặc định =
10
;
|
Dung lượng tối đa là 2^30 - 8.
?
1
2
3
4
5
6
7
8
9
10
11
12
|
/**
* kích thước tối đa của mảng cần phân bổ.
* một số máy ảo dành riêng một số từ tiêu đề trong một mảng.
* các nỗ lực phân bổ các mảng lớn hơn có thể dẫn đến
* outofmemoryerror: kích thước mảng yêu cầu vượt quá giới hạn của máy ảo
*/
riêng tư
tĩnh
cuối cùng
số nguyên
max_array_size = số nguyên.giá_trị_tối_đa -
8
;
/**
* hằng số giữ giá trị lớn nhất mà {@code int} có thể
* có, 231-1.
*/
công cộng
tĩnh
cuối cùng
số nguyên
giá trị tối đa =
0x7ffffff
;
|
Quy tắc mở rộng là: oldcapacity*1.5.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
/**
* tăng khả năng đảm bảo rằng nó có thể chứa ít nhất
* số lượng phần tử được chỉ định bởi đối số dung lượng tối thiểu.
* @param mincapacity dung lượng tối thiểu mong muốn
*/
riêng tư
vô hiệu
phát triển(
số nguyên
công suất tối thiểu) {
số nguyên
oldcapacity = elementdata.length;
số nguyên
dung lượng mới = dung lượng cũ + (dung lượng cũ >>
1
);
nếu như
(newcapacity - mincapacity <
0
)
công suất mới = công suất tối thiểu;
nếu như
(newcapacity - max_array_size >
0
)
newcapacity = hugecapacity(mincapacity);
elementdata = mảng.copyof(elementdata, newcapacity);
}
|
2、bản đồ băm 。
Kích thước mặc định: 16.
?
1
2
3
4
|
/**
* dung lượng ban đầu mặc định - phải là lũy thừa của 2.
*/
tĩnh
cuối cùng
số nguyên
dung lượng ban đầu mặc định =
1
<<
4
;
|
Dung lượng tối đa là: 2^30.
?
1
2
3
4
5
6
|
/**
* công suất tối đa, được sử dụng nếu giá trị cao hơn được chỉ định ngầm định
* bởi bất kỳ hàm tạo nào có đối số.
* phải là lũy thừa của hai <= 1<<30.
*/
tĩnh
cuối cùng
số nguyên
sức chứa tối đa =
1
<<
30
;
|
Quy tắc mở rộng là: số nguyên lũy thừa thứ n nhỏ nhất lớn hơn công suất cũ là 2.
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
/**
* thêm một mục mới với khóa, giá trị và mã băm được chỉ định vào
* thùng được chỉ định. đây là trách nhiệm của
* phương pháp thay đổi kích thước bảng nếu cần thiết.
* lớp con ghi đè lên điều này để thay đổi hành vi của phương thức put.
*/
vô hiệu
thêm mục nhập(
số nguyên
băm, khóa k, giá trị v,
số nguyên
bucketindex) {
nếu như
((kích thước >= ngưỡng) && (
vô giá trị
!= bảng[bucketindex])) {
thay đổi kích thước(
2
* chiều dài bảng);
băm = (
vô giá trị
!= key) ? băm(key) :
0
;
bucketindex = indexfor(băm, chiều dài bảng);
}
createentry(băm, khóa, giá trị, bucketindex);
}
|
Tóm tắt.
Trên đây là toàn bộ nội dung bài viết mong rằng nội dung bài viết có giá trị tham khảo và học tập nhất định cho quá trình học tập, làm việc của mọi người. Nếu bạn muốn biết thêm về nó, vui lòng xem các liên kết liên quan bên dưới.
Liên kết gốc: https://blog.csdn.net/u012099869/article/details/50411767.
Cuối cùng, bài viết về các quy tắc mở rộng của ArrayList và HashMap kết thúc tại đây. Nếu bạn muốn biết thêm về các quy tắc mở rộng của ArrayList và HashMap, vui lòng tìm kiếm bài viết CFSDN hoặc tiếp tục duyệt qua các bài viết liên quan. tương lai blog của tôi! .
Tôi là một lập trình viên xuất sắc, rất giỏi!