Chương 3 Mảng (arrays)

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.

pptx16 trang | Chia sẻ: lylyngoc | Lượt xem: 1713 | Lượt tải: 0download
Bạn đang xem nội dung tài liệu Chương 3 Mảng (arrays), để tải tài liệu về máy bạn click vào nút DOWNLOAD ở trên
Click to edit Master title style Click to edit Master text styles Second level Third level Fourth level 17/09/2013 ‹#› /17 MÔN: CẤU TRÚC DỮ LIỆU GV: NGUYỄN XUÂN VINH MẢNG (Arrays) Nguyễn Xuân Vinh nguyenxuanvinh@hcmuaf.edu.vn CẤU TRÚC DỮ LIỆU DATA STRUCTURES [214331] Mảng (Arrays) 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. Tính chất của mảng (Arrays) Ư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. Tạo mảng (arrays) 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 []? Giá trị mặc định của mảng Quản lý bộ nhớ mảng (Array Memory Allocation) Mảng dữ liệu nguyên thủy (Primitive data type) Mảng chứa giá trị thực sự Mảng đối tượng (Reference data type) Mảng chỉ chứa các tham chiếu (references) tới đối tượng thật sự Mảng đa chiều 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 = ? Các phép toán trên mảng Duyệt mảng Copy và clone mảng Phép gán mảng Kiểm tra 2 mảng bằng nhau Thêm phần tử vào mảng 1) Duyệt mảng int[] 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]); } // Cách 2 for (int i : arrays) { System.out.println(i); } Index of arrays 2) Copying và Cloning mảng Để 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]; } 3) Phép gán mảng Button buttons[] = { new Button ("One"), new Button("Two"), new Button("Three") }; Component components[] = buttons; 4) Hai mảng bằng nhau “==”: kiểm tra 2 mảng có cùng vị trí bộ nhớ (memory space) hay không. boolean b1 = (array == clone); “Arrays.equals()”: kiểm tra 2 mảng có bằng nhau theo nghĩa “tự nhiên” hay không. boolean b2 = Arrays.equals(array, clone); 5) Thêm phần tử vào mảng int[] arrays = new int[4]; // Khi mảng chưa đầy arrays[0] = 0; arrays[1] = 1; arrays[2] = 2; arrays[3] = 3; // Khi mảng đã đầy int[] newArrays = new int[5]; for(int i=0; i<arrays.length; i++) { newArrays[i] = arrays[i]; } newArrays[4] = 4; Tóm tắt 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. HỎI ĐÁP
Tài liệu liên quan