Chương 3 - Mảng và Collection | Tài liệu giảng dạy: Lập trình Java | Đại học Văn Lang

Chương 3 - Mảng và Collection | Tài liệu giảng dạy: Lập trình Java | Đại học Văn Lang giúp sinh viên tham khảo, ôn luyện và phục vụ nhu cầu học tập của mình cụ thể là có định hướng, ôn tập, nắm vững kiến thức môn học và làm bài tốt trong những bài kiểm tra, bài tiểu luận, bài tập kết thúc học phần, từ đó học tập tốt và có kết quả cao cũng như có thể vận dụng tốt những kiến thức mình đã học

TRƯỜNG ĐẠI HỌC HỌC VĂN LANG
KHOA CÔNG NGHỆ THÔNG TIN
TÀI LIỆU GIẢNG DẠY
LẬP TRÌNH JAVA
Chủ biên: ThS. TỐNG HÙNG ANH
2020
Khoa Công nghệ Thông tin
Lập trình java 2
MỤC LỤC
MỤC LỤC
I.Cấu trúc dữ liệu mảng................................................................................................................................3
II.Mảng trong Java.......................................................................................................................................3
II.1 Mảng một chiều trong Java....................................................................................................................3
1. Tạo một mảng trong Java..................................................................................................................3
2. Các cách khác để tạo một mảng trong Java.....................................................................................3
4. Thay đổi một phần tử mảng trong Java...........................................................................................3
5. Độ dài mảng trong Java.....................................................................................................................4
6. Duyệt các phần tử của mảng trong Java...........................................................................................4
7. Sử dụng vòng lặp for......................................................................................................................5
8. Sử dụng foreach..............................................................................................................................5
9. So sánh for với foreach...................................................................................................................6
10. Sắp xếp mảng....................................................................................................................................6
11. Các phương thức tiện ích cho mảng một chiều..............................................................................7
II.2. Mảng hai chiều trong Java.....................................................................................................................9
1.Khai báo mảng hai chiều trong Java..................................................................................................9
2. Khởi tạo và gán giá trị cho mảng hai chiều trong java................................................................9
3. Khai báo và khởi tạo mảng hai chiều trong java.............................................................................9
4.Cộng hai ma trận (mảng hai chiều) trong Java.................................................................................9
III. Collection framework...........................................................................................................................11
Khoa Công nghệ Thông tin
Lập trình java 3
Giải bổ sung bài tập 6 – chương 2:
Bài 6 (chương 2): Tạo và in mảng đối tượng nhân viên
package cau6;
import java.util.Scanner;
public class NhanVien {
String ;name
String ;address
int ;age
public int NhanVien(String , String , ten diaChi ) { //contructor để khởi tạo thông tintuoi
// Auto-generated constructor stubTODO
name = ten;
address = diaChi;
age = tuoi;
}
public static void main(String[] ) {args
NhanVien[] = NhanVien[10];nVien new
Scanner = Scanner(System. ); // nhập từ bàn phímsc new in
System. .println( );out "Nhập vào mảng NV:"
for int ( =0; < ; ++) {i i nVien.length i
String = ten sc.nextLine();
String = diaChi sc.nextLine();
int = tuoi sc.nextInt();
nVien i ten diaChi tuoi[ ] = new NhanVien( , , );
sc.nextLine(); //xóa vùng nhớ đệm
}
System. .println( );out "Xuất mảng NV:"
for int ( =0; ; ++) {i i< .nVien length i
System. .println( ]. ]. + ]. );out nVien[i name +" "+nVien[i address " "+nVien[i age
}
}
}
I.Cấu trúc dữ liệu mảng
Khoa Công nghệ Thông tin
Lập trình java 4
II.Mảng trong Java
II.1 Mảng một chiều trong Java
1. Tạo một mảng trong Java
2. Các cách khác để tạo một mảng trong Java
3. Truy cập các phần tử của một mảng trong Java
Bạn truy cập một phần tử mảng bằng cách sử dụng số chỉ mục (index).
BÀI TẬP 1 : Truy cập một phần tử đầu tiên mảng { , , , "Honda" "MERCEDES" "Ford"
"HUNDAI"} bằng cách sử dụng số chỉ mục [0].
Hướng dẫn
public class TruyCapPhanTuMang {
public static void main(String[] ) {args
// Auto-generated method stubTODO
String[] = { , , , cars "Honda" "MERCEDES" "Ford" "HUNDAI" };
System. .println( [1]);out cars
}
}
Kết quả:
MERCEDES
Lưu ý: Chỉ mục của mảng bắt đầu bằng 0: [0] là phần tử đầu tiên. [1] là phần tử thứ hai, v.v.
4. Thay đổi một phần tử mảng trong Java
Để thay đổi giá trị của một phần tử cụ thể, hãy sử dụng số chỉ mục:
BÀI TẬP 2: Thay đổi giá trị của một phần tử đầu tiên của mảng { , "Morning" "Honda"
"MERCEDES" "Ford", , }, hãy sử dụng số chỉ mục[0]:"HUNDAI"
Khoa Công nghệ Thông tin
Lập trình java 5
Hướng dẫn
public class ThayDoiPhanTuMang {
main(String[] ) {public static void args
String[] = { , , , cars "Honda" "MERCEDES" "Ford" "HUNDAI" };
// Thay doi phần tử đầu tiên
cars[0] = "Morning";
// hiển thị phần tử đầu tiên và thứ 2 của mảng
System. .println( [0]);out "P/tử thứ 1: " + cars
System. .println( [1]);out "P/tử thứ 2: " + cars
}
}
Kết quả:
Morning
MERCEDES
5. Độ dài mảng trong Java
Để biết có bao nhiêu phần tử một mảng, sử dụng hàm :length
BÀI TẬP 3 : In ra bao nhiêu phần tử một mảng { , , , "Honda" "MERCEDES" "Ford"
"HUNDAI" }, sử dụng hàm length.
Hướng dẫn
public class DoDaiMang {
public static void main(String[] ) {args
// Auto-generated method stubTODO
String[] = { , , , cars "Honda" "MERCEDES" "Ford" "HUNDAI" };
System. .println( . );out "Độ dài của mảng cars là: " + cars length
}
}
Kết quả:
Độ dài của mảng cars là: 4
Khoa Công nghệ Thông tin
Lập trình java 6
6. Duyệt các phần tử của mảng trong Java
Khoa Công nghệ Thông tin
Lập trình java 7
7. Sử dụng vòng lặp for
Bạn có thể lặp qua các phần tử mảng bằng vòng lặp for và sử dụng hàm length để chỉ định số lần
vòng lặp sẽ chạy.
BÀI TẬP 4 : Lặp qua để in ra các phần tử mảng { , , , "Honda" "MERCEDES" "Ford"
"HUNDAI" } bằng vòng lặp for và sử dụng hàm length để chỉ định số lần vòng lặp sẽ
chạy.
Hướng dẫn
public class DuyetCacPhanTu_for {
public static void main(String[] ) {args
String[] = { , , , cars "Honda" "MERCEDES" "Ford" "HUNDAI" };
= 0; < ; ++) { for (int i i cars.length i
System.out.println( ]);cars[i
}
}
}
Kết quả:
Honda
MERCEDES
Ford
HUNDAI
8. Sử dụng foreach
BÀI TẬP 5 : Lặp qua để in ra các phần tử mảng { , , , "Honda" "MERCEDES" "Ford"
"HUNDAI" } bằng vòng lặp foreach.
Hướng dẫn
public class DuyetCacPhanTu_foreach {
public static void main(String[] ) {args
String[] = { , , , cars "Honda" "MERCEDES" "Ford" "HUNDAI" };
for (String : car cars){
}
}
}
System. .println(out car);
Khoa Công nghệ Thông tin
Lập trình java 8
Kết quả:
Honda
MERCEDES
Ford
HUNDAI
9. So sánh for với foreach
Nếu bạn so sánh vòng lặp for và vòng lặp foreach, bạn sẽ thấy rằng phương thức foreach dễ viết
hơn, nó không yêu cầu bộ đếm (sử dụng thuộc tính length) và nó dễ đọc hơn.
10. Sắp xếp mảng
Có nhiều phương thức mảng có sẵn, Bài tập Sort(), sắp xếp một mảng theo thứ tự bảng chữ cái
hoặc theo thứ tự tăng dần,
BÀI TẬP 6: Sắp xếp một mảng { , , , } theo thứ "Honda" "MERCEDES" "Ford" "HUNDAI"
tự bảng chữ cái hoặc theo thứ tự tăng dần.
Hướng dẫn
import java.util.Arrays;
public class SapXepCacPhanTuMang_TangDan {
public static void main(String[] ) {args
String[] = { , , , }; cars "Honda" "MERCEDES" "Ford" "HUNDAI"
Arrays. );sort(cars
System. );out.println("Mảng cars sau khi được sắp xếp:"
for (String : ) { car cars
}
}
}
Kết quả:
Mảng cars sau khi được sắp xếp:
Ford
Honda
HUNDAI
MERCEDES
System. .println(out car);
Khoa Công nghệ Thông tin
Lập trình java 9
11. Các phương thức tiện ích cho mảng một
chiều
BÀI TẬP 7 : TẠO MẢNG {15, 5, 10, 20, 25}
Sắp xếp các giá trị của mảng tăng dần.
Tìm kiếm chỉ số của một giá trị 20 xuất hiện trong mảng.
/Gán cùng một giá trị 99 cho tất cả các phần tử của mảng.
Hướng dẫn
import java.util.Arrays;
public class CacPhuongThucTienIch {
public static void main(String[] ) {args
// Auto-generated method stubTODO
// Khai báo một mảng 5 phần tử kiểu nguyên
int[] = {15, 5, 10, 20, 25};arr
System. .println( );out "Gọi hàm toString để hiển thị mảng: "
// Chuyển một mảng thành chuỗi (string)
System. .println(Arrays.out toString(arr));
// Sắp xếp các giá trị của mảng tăng dần
Arrays. );sort(arr
System. .println( );out "Sau khi gọi hàm sort: "
// Chuyển một mảng thành chuỗi (string)
System. .println(Arrays.out toString(arr));
// Tìm kiếm chỉ số của một giá trị xuất hiện trong mảng.
// Mảng phải được sắp xếp trước khi gọi hàm binarySearch
int index = Arrays.binarySearch(arr, 10);
if (index < 0) {
Khoa Công nghệ Thông tin
Lập trình java 10
System. .println( );out "Không tìm thấy giá trị"
} {else
System. .println( );out "Tìm thấy giá trị 10 tại index " + index
}
// Gán cùng một giá trị cho tất cả các phần tử của mảng.
Arrays.fill(arr, 49);
System. .println( );out "Sau khi gọi hàm fill: "
// Chuyển một mảng thành chuỗi (string)
System. .println(Arrays.out toString(arr));
}
}
Kết quả:
Gọi hàm toString để hiển thị mảng:
[15, 5, 10, 20, 25]
Sau khi gọi hàm sort:
[5, 10, 15, 20, 25]
Tìm thấy giá trị 10 tại index 2
Sau khi gọi hàm fill:
[49, 49, 49, 49, 49]
Khoa Công nghệ Thông tin
Lập trình java 11
II.2.Mảng hai chiều trong Java
1.Khai báo mảng hai chiều trong Java
2. Khởi tạo và gán giá trị cho mảng hai chiều trong java
3. Khai báo và khởi tạo mảng hai chiều trong java
BÀI TẬP 8 : tạo mảng hai chiều { { 1, 2, 3 }, { 2, 4, 5 }, { 4, 4, 5 } }sau đó in mảng 2 chiều ra
màn hình
Hướng dẫn
public class InCacPhanTuMangHaiChieu {
public static void main(String[] ) {args
int arr[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
// in mảng 2 chiều ra màn hình
for int ( i i = 0; < 3; i++) {
for int ( j j = 0; < 3; j++) {
}
System.out.println();
}
}
}
Kết quả:
1 2 3
4 5 6
7 8 9
4.Cộng hai ma trận (mảng hai chiều) trong Java
BÀI TẬP 9 : Cộng hai ma trận { { 1, 3, 4 }, { 3, 4, 5 } };
System. .print( [ ][ );out arr i j] + “ ”
Khoa Công nghệ Thông tin
Lập trình java 12
{ { 1, 3, 4 }, { 3, 4, 5 } };
Hướng dẫn
public class CongHaiMaTRan {
public static void main(String[] ) {args
int a[][] = { { 1, 2, 4 }, { 3, 4, 5 } };
int b[][] = { { 1, 3, 5 }, { 3, 3, 3 } };
// Tạo ma trận khác để lưu kết quả
int new intc[][] = [2][3];
// Cộng hai ma trận
for int ( i i = 0; < 2; i++) {
for int ( j j = 0; < 3; j++) {
c j a j b i[i][ ] = [i][ ] + [ ][j];
System. .print( ][out c[i j] + );" "
}
System. .println();out
}
}
}
Kết quả:
2 5 9
6 7 8
| 1/15

Preview text:

TRƯỜNG ĐẠI HỌC HỌC VĂN LANG
KHOA CÔNG NGHỆ THÔNG TIN
TÀI LIỆU GIẢNG DẠY LẬP TRÌNH JAVA
Chủ biên: ThS. TỐNG HÙNG ANH 2020
Khoa Công nghệ Thông tin MỤC LỤC MỤC LỤC
I.Cấu trúc dữ liệu mảng................................................................................................................................3
II.Mảng trong Java.......................................................................................................................................3
II.1 Mảng một chiều trong Java....................................................................................................................3
1. Tạo một mảng trong Java..................................................................................................................3
2. Các cách khác để tạo một mảng trong Java.....................................................................................3
4. Thay đổi một phần tử mảng trong Java...........................................................................................3
5. Độ dài mảng trong Java.....................................................................................................................4
6. Duyệt các phần tử của mảng trong Java...........................................................................................4
7. Sử dụng vòng lặp for......................................................................................................................5
8. Sử dụng foreach..............................................................................................................................5
9. So sánh for với foreach...................................................................................................................6
10. Sắp xếp mảng....................................................................................................................................6
11. Các phương thức tiện ích cho mảng một chiều..............................................................................7
II.2. Mảng hai chiều trong Java.....................................................................................................................9
1.Khai báo mảng hai chiều trong Java..................................................................................................9
2. Khởi tạo và gán giá trị cho mảng hai chiều trong java................................................................9
3. Khai báo và khởi tạo mảng hai chiều trong java.............................................................................9
4.Cộng hai ma trận (mảng hai chiều) trong Java.................................................................................9
III. Collection framework...........................................................................................................................11
Lập trình java 2
Khoa Công nghệ Thông tin
Giải bổ sung bài tập 6 – chương 2:
Bài 6 (chương 2): Tạo và in mảng đối tượng nhân viên package cau6;
import java.util.Scanner; public class NhanVien { String name; String address; int age; public NhanVien(String , String ten diaChi int ,
) { //contructor để khởi tạo thông tin tuoi
// TODO Auto-generated constructor stub name = ten; address = diaChi; age = tuoi; } public static void main(String[] args) {
NhanVien[] nVien = new NhanVien[10];
Scanner sc = new Scanner(System. ); // nhập từ bàn phím in
System.out.println( ); "Nhập vào mảng NV:"
for (int i=0; i< nVien.length; i++) { String ten = sc.nextLine(); String diaChi = sc.nextLine(); int = tuoi sc.nextInt();
nVien[i] = new NhanVien(ten diaChi , tuoi , );
sc.nextLine(); //xóa vùng nhớ đệm }
System.out.println( ); "Xuất mảng NV:"
for (int i=0; iSystem.out.println(nVien[i].name +" "+nVien[i].address+" "+nVien[i].age); } } }
I.Cấu trúc dữ liệu mảng
Lập trình java 3
Khoa Công nghệ Thông tin II.Mảng trong Java
II.1 Mảng một chiều trong Java
1. Tạo một mảng trong Java
2. Các cách khác để tạo một mảng trong Java
3. Truy cập các phần tử của một mảng trong Java
Bạn truy cập một phần tử mảng bằng cách sử dụng số chỉ mục (index). BÀI TẬP
1 : Truy cập một phần tử đầu tiên mảng { "Honda", "MERCEDES", "Ford",
"HUNDAI"} bằng cách sử dụng số chỉ mục [0]. Hướng dẫn
public class TruyCapPhanTuMang {
public static void main(String[] args) {
// TODO Auto-generated method stub String[] cars = { "Honda", , "MERCEDES" "Ford", "HUNDAI" };
System.out.println(cars[1]); } } Kết quả: MERCEDES
Lưu ý: Chỉ mục của mảng bắt đầu bằng 0: [0] là phần tử đầu tiên. [1] là phần tử thứ hai, v.v.
4. Thay đổi một phần tử mảng trong Java
Để thay đổi giá trị của một phần tử cụ thể, hãy sử dụng số chỉ mục:
BÀI TẬP 2: Thay đổi giá trị của một phần tử đầu tiên "Morning" của mảng { "Honda", "MERCEDES" "Ford" ,
, "HUNDAI" }, hãy sử dụng số chỉ mục[0]:
Lập trình java 4
Khoa Công nghệ Thông tin Hướng dẫn
public class ThayDoiPhanTuMang {
public static void main(String[] ) { args
String[] cars = { "Honda", "MERCEDES", "Ford", "HUNDAI" };
// Thay doi phần tử đầu tiên cars[0] = "Morning";
// hiển thị phần tử đầu tiên và thứ 2 của mảng
System.out.println("P/tử thứ 1: " + cars[0]);
System.out.println("P/tử thứ 2: " + cars[1]); } } Kết quả: Morning MERCEDES
5. Độ dài mảng trong Java
Để biết có bao nhiêu phần tử một mảng, sử dụng hàm : length BÀI TẬP
3 : In ra bao nhiêu phần tử một mảng { "Honda", " , MERCEDES" "Ford",
"HUNDAI" }, sử dụng hàm length. Hướng dẫn
public class DoDaiMang {
public static void main(String[] args) {
// TODO Auto-generated method stub String[] cars = { "Honda", , "MERCEDES" "Ford", "HUNDAI" };
System.out.println("Độ dài của mảng cars là: " + cars.length); } } Kết quả:
Độ dài của mảng cars là: 4
Lập trình java 5
Khoa Công nghệ Thông tin
6. Duyệt các phần tử của mảng trong Java

Lập trình java 6
Khoa Công nghệ Thông tin
7. Sử dụng vòng lặp for
Bạn có thể lặp qua các phần tử mảng bằng vòng lặp for và sử dụng hàm length để chỉ định số lần vòng lặp sẽ chạy. BÀI TẬP 4
: Lặp qua để in ra các phần tử mảng { "Honda", "MERCEDES", "Ford",
"HUNDAI" } bằng vòng lặp for và sử dụng hàm length để chỉ định số lần vòng lặp sẽ chạy. Hướng dẫn
public class DuyetCacPhanTu_for {
public static void main(String[] ) { args String[] cars = { "Honda", , "MERCEDES" "Ford", "HUNDAI" };
for (int i = 0; i < cars.length; i++) {
System.out.println(cars[i]); } } } Kết quả: Honda MERCEDES Ford HUNDAI 8. Sử dụng foreach BÀI TẬP 5
: Lặp qua để in ra các phần tử mảng { "Honda", "MERCEDES", "Ford",
"HUNDAI" } bằng vòng lặp foreach. Hướng dẫn
public class DuyetCacPhanTu_foreach {
public static void main(String[] ) { args
String[] cars = { "Honda", "MERCEDES", "Ford", "HUNDAI" };
for (String car : cars){ }
System.out.println(car); } }
Lập trình java 7
Khoa Công nghệ Thông tin Kết quả: Honda MERCEDES Ford HUNDAI
9. So sánh for với foreach
Nếu bạn so sánh vòng lặp for và vòng lặp foreach, bạn sẽ thấy rằng phương thức foreach dễ viết
hơn, nó không yêu cầu bộ đếm (sử dụng thuộc tính length) và nó dễ đọc hơn. 10. Sắp xếp mảng
Có nhiều phương thức mảng có sẵn, Bài tập Sort(), sắp xếp một mảng theo thứ tự bảng chữ cái
hoặc theo thứ tự tăng dần,
BÀI TẬP 6: Sắp xếp một mảng { "Honda", "MERCEDES", "Ford", "HUNDAI" } theo thứ
tự bảng chữ cái hoặc theo thứ tự tăng dần. Hướng dẫn
import java.util.Arrays;
public class SapXepCacPhanTuMang_TangDan {
public static void main(String[] ) { args String[] cars = { "Honda", ,
"MERCEDES" "Ford", "HUNDAI" }; Arrays.sort(cars);
System.out.println( );
"Mảng cars sau khi được sắp xếp:"
for (String car : cars) { }
System.out.println(car); } } Kết quả:
Mảng cars sau khi được sắp xếp: Ford Honda HUNDAI MERCEDES
Lập trình java 8
Khoa Công nghệ Thông tin
11. Các phương thức tiện ích cho mảng một chiều BÀI TẬP 7
: TẠO MẢNG {15, 5, 10, 20, 25}
Sắp xếp các giá trị của mảng tăng dần.
Tìm kiếm chỉ số của một giá trị 20 xuất hiện trong mảng.
/Gán cùng một giá trị 99 cho tất cả các phần tử của mảng. Hướng dẫn
import java.util.Arrays;
public class CacPhuongThucTienIch {
public static void main(String[] args) {
// TODO Auto-generated method stub
// Khai báo một mảng 5 phần tử kiểu nguyên
int[] arr = {15, 5, 10, 20, 25};
System.out.println( );
"Gọi hàm toString để hiển thị mảng: "
// Chuyển một mảng thành chuỗi (string)
System.out.println(Arrays.toString(arr));
// Sắp xếp các giá trị của mảng tăng dần Arrays.sort(arr);
System.out.println("Sau khi gọi hàm sort: ");
// Chuyển một mảng thành chuỗi (string)
System.out.println(Arrays.toString(arr));
// Tìm kiếm chỉ số của một giá trị xuất hiện trong mảng.
// Mảng phải được sắp xếp trước khi gọi hàm binarySearch
int index = Arrays.binarySearch(arr, 10); if (index < 0) {
Lập trình java 9
Khoa Công nghệ Thông tin
System.out.println( );
"Không tìm thấy giá trị" } else {
System.out.println("Tìm thấy giá trị 10 tại index " + index); }
// Gán cùng một giá trị cho tất cả các phần tử của mảng. Arrays.fill(arr, 49);
System.out.println( ); "Sau khi gọi hàm fill: "
// Chuyển một mảng thành chuỗi (string)
System.out.println(Arrays.toString(arr)); } } Kết quả:
Gọi hàm toString để hiển thị mảng: [15, 5, 10, 20, 25] Sau khi gọi hàm sort: [5, 10, 15, 20, 25]
Tìm thấy giá trị 10 tại index 2 Sau khi gọi hàm fill: [49, 49, 49, 49, 49]
Lập trình java 10
Khoa Công nghệ Thông tin
II.2.Mảng hai chiều trong Java
1.Khai báo mảng hai chiều trong Java
2. Khởi tạo và gán giá trị cho mảng hai chiều trong java
3. Khai báo và khởi tạo mảng hai chiều trong java BÀI TẬP
8 : tạo mảng hai chiều { { 1, 2, 3 }, { 2, 4, 5 }, { 4, 4, 5 } }sau đó in mảng 2 chiều ra màn hình Hướng dẫn
public class InCacPhanTuMangHaiChieu {
public static void main(String[] ) { args
int arr[][] = { { 1, 2, 3 }, { 4, 5, 6 }, { 7, 8, 9 } };
// in mảng 2 chiều ra màn hình for (int i i = 0; < 3; i++) { for (int j j = 0; < 3; j++) {
System.out.print(arr[i][j] + “ ”); }
System.out.println(); } } } Kết quả: 1 2 3 4 5 6 7 8 9
4.Cộng hai ma trận (mảng hai chiều) trong Java BÀI TẬP
9 : Cộng hai ma trận { { 1, 3, 4 }, { 3, 4, 5 } };
Lập trình java 11
Khoa Công nghệ Thông tin { { 1, 3, 4 }, { 3, 4, 5 } }; Hướng dẫn
public class CongHaiMaTRan {
public static void main(String[] ) { args
int a[][] = { { 1, 2, 4 }, { 3, 4, 5 } };
int b[][] = { { 1, 3, 5 }, { 3, 3, 3 } };
// Tạo ma trận khác để lưu kết quả
int c[][] = new int[2][3]; // Cộng hai ma trận for (int i i = 0; < 2; i++) { for (int j j = 0; < 3; j++) { c[i][j] = a[i][j] + b[i][j];
System.out.print(c[i][j] + " "); }
System.out.println(); } } } Kết quả: 2 5 9 6 7 8
Lập trình java 12