MẢNG Arrays Nguyễn Xuân Vinh CẤU TRÚC DỮ LIỆU DATA STRUCTURES [214331]... Dùng để lưu trữ một tập các phần tử theo thứ tự và có thể được truy xuất thông qua chỉ mục index.. • Không có
Trang 1MẢNG (Arrays)
Nguyễn Xuân Vinh
CẤU TRÚC DỮ LIỆU DATA STRUCTURES
[214331]
Trang 2 Collection duy nhất được hỗ trợ sẵn trong ngôn ngữ lập trình Java
Dùng để lưu trữ một tập các phần tử theo thứ tự và có thể được truy xuất thông qua chỉ mục index
Là lớp con của Object và hiện thực cả 2 interface Serializable và Cloneable
• Không có java source file để xem cách thức làm việc bên trong của 1 mảng như thế nào
• Khi tạo ra 1 mảng cần chỉ định kích thước và kiểu dữ liệu, sau đó
có thể đưa các phần tử có cùng kiểu đã định sẵn vào trong mảng cho tới khi mảng đầy
Trang 3• Ưu điểm:
– Truy xuất nhanh
– Sử dụng đơn giản
• Nhược điểm:
– Phải chỉ định một kích thước cụ thể tại thời điểm xây dựng mảng
– Tuân thủ luật đầy
– Việc bố trị lại khá phức tạp
Trang 4• Bước 1: Khai báo mảng (Declaration)
String[] names;
• Bước 2: Khởi tạo mảng (Initialization)
names = new String[3];
• Bước 3: Gán giá trị (Assignment)
names[0] = "Leonardo";
names[1] = "da";
names[2] = "Vinci";
• Cách tạo và gán trực tiếp:
String names[] = new String[]{"Leonardo", "da", "Vinci"}; String names[] = {"Leonardo", "da", "Vinci"};
String names[] = new String[3]{"Leonardo", "da",
"Vinci"}; ???
• Các phần tử trong mảng có thể là:
– Kiểu dữ liệu nguyên thủy (primitive date type).
– Kiểu dữ liệu dạng Object (Reference date type).
Có bao nhiêu cách đặt dấu []?
Trang 5M
Trang 7Mảng chứa giá trị thực sự
Trang 8Mảng chỉ chứa các tham chiếu (references) tới đối tượng thật sự
Trang 9• Khi mỗi phần tử của 1 mảng trỏ tới 1 mảng khác, ta có mảng đa
chiều (multidimensional array).
• Khai báo (declaration)
int A[][];
• Khởi tạo (Initialization)
A = new int[3][4];
• Gán giá trị (Assignment)
A[0][0] = 1;
• Truy vấn mảng (Query)
int x = A[1][3];
x = ?
Trang 101) Duyệt mảng
2) Copy và clone mảng
3) Phép gán mảng
4) Kiểm tra 2 mảng bằng nhau 5) Thêm phần tử vào mảng
Trang 11int[] arrays = new int[4];
arrays[0] = 0;
arrays[1] = 1;
arrays[2] = 2;
arrays[3] = 3;
// Cách 1
for (int i = 0; i < arrays.length ; i++) { System.out.println(arrays[i]);
}
Index of arrays
Trang 12• Để sao chép các phần tử từ mảng này sang mảng khác ta dùng System.arraycopy():
int[] arrays = new int[10];
// Cách 1
int[] clone1 = new int[10];
System.arraycopy(arrays, 0, clone1, 0, 10);
// Cách 2
int[] clone2 = Arrays.copyOfRange(arrays, 0, 10);
// Cách 3
int [] clone3 = new int [10];
for ( int i=0; i<arrays.length; i++) {
clone3[i] = arrays[i];
}
Trang 13Button buttons[] = {
new Button ( "One" ),
new Button( "Two" ),
new Button( "Three" ) };
Component components[] = buttons;
Trang 14• “==”: kiểm tra 2 mảng có cùng vị trí bộ nhớ (memory space) hay không
• “Arrays.equals()”: kiểm tra 2 mảng có bằng nhau theo nghĩa “tự nhiên” hay không
Trang 15int[] arrays = new int[4];
arrays[0] = 0;
arrays[1] = 1;
arrays[2] = 2;
arrays[3] = 3;
int[] newArrays = new int[5];
for(int i=0; i<arrays.length; i++) {
newArrays[i] = arrays[i];
Trang 16 Mảng là gì?
Ưu và nhược điểm của mảng
Tạo mảng
Giá trị mặc định của mảng
Quản lý bộ nhớ của mảng trong JVM (Memory Allocation)
Mảng đa chiều
Các phép toán trên mảng:
Duyệt mảng
Copy & Clone
Assign
Compare (= =)
Thêm phần tử vào mảng
Trang 17HỎI ĐÁP