1. ArrayList
2. Duyệt mảng ArrayList
3. Ví dụ
3. Ví dụ
4. Bài tập
Các
mảng/Array
chuẩn là có độ dài cố định. Sau khi các mảng được tạo, chúng không thể tăng
hoặc giảm kích cỡ. Nếu mảng khai báo kích thước nhỏ thì không chứa đủ, nếu
khai báo lớn thì gây lãng phí bộ nhớ,...
1. ArrayList các điểm cần chú ý:
Các phương thức (method) hay dùng của ArrayList
Ví dụ:
2. Duyệt mảng ArrayList
Dùng FOR:
THỰC HIỆN:
1. ArrayList các điểm cần chú ý:
- Là mảng có thể thay đổi được kích thước (Khi kích cỡ này bị vượt, collection tự động được tăng. Khi các đối tượng bị gỡ bỏ, ArrayList có thể bị giảm kích cỡ.)
- Rất mềm dẻo trong việc thêm/xóa các phần tử
- Cho phép truy cập ngẫu nhiên, tốc độ truy xuất (get) phần tử nhanh vì nó lưu dữ liệu theo chỉ mục (index).
- ArrayList còn cho phép thực hiện các phép toán tập hợp như hợp, giao, hiệu…
Các phương thức khởi tạo (constructor) của lớp
- ArrayList(): khởi tạo một danh sách mảng trống.
- ArrayList(Collection c): khởi tạo một danh sách mảng được khởi tạo với các phần tử của collection c.
- ArrayList(int capacity): khởi tạo một danh sách mảng mà có sức chứa (compacity) ban đầu được chỉ định. Nếu không chỉ định, mặc định là 10. Mỗi lần thêm một phần tử vào danh sách, nếu vượt quá sức chứa cho phép thì danh sách sẽ tự động tăng thêm 50% kích thước hiện có.
import java.util.ArrayList; // import ArrayList class
// ArrayList kieuCu = new ArrayList(); // non-generic - kiểu cũ
ArrayList <String> mauSac = new ArrayList <String>(); //khởi tạo oject ArrayList có tên là mauSac lưu trữ các chuỗi
Phương Thức | Mô Tả | Ví Dụ | Giải Thích |
---|---|---|---|
boolean add(Object o) | Thêm phần tử được chỉ định vào cuối một danh sách. | mauSac.add("Xanh"); | Thêm chuỗi "Xanh" vào cuối danh sách |
Object get(int index) | Trả về phần tử tại index đã cho | mauSac.get(0) | Truy xuất vào phần tử thứ nhất của arraylist |
Object set(int index, Object element) | Thay thế phần tử tại vị trí đã cho trong list này với phần tử đã xác định(giá trị mới) | mauSac.set(1, "Vang"); | Thay thế giá trị tại vị trí thứ HAI thành "Vang" |
boolean remove(Object) | Xóa phần tử "Vang" ra khỏi arraylist | mauSac.remove("Vang"); | |
Object remove(int index) | Gỡ bỏ phần tử tại index đã cho | mauSac.remove(1); | Rỡ bỏ/xóa phần tử có Index = 1 ra khỏi arraylist |
void clear() | Xóa tất cả các phần tử từ danh sách. | mauSac.clear(); | |
int size() | Kiểm tra arraylist có bao nhiêu phần tử | mauSac.size(); | |
boolean isEmpty() | Kiểm tra rỗng | mauSac.isEmpty(); | |
boolean contains(Object) | Kiểm tra sự tồn tại | mauSac.contains("Xanh"); | Kiểm tra Oject "Xanh" có tồn tại trong arraylist |
int indexOf(Object elem) | Tìm vị trí phần tử |
Ví dụ:
import java.util.ArrayList;
public class ArrayList_Vidu {
public static void main(String[] args) {
ArrayList < String > mauSac = new ArrayList < String >(); //khởi tạo oject ArrayList có tên là mauSac lưu trữ các chuỗi
mauSac.add("Xanh");
mauSac.add("Do");
mauSac.add("Trang");
System.out.println("ArrayList: " + mauSac);
System.out.println("Trong ArrayList co mau 'Xanh' la: " + mauSac.contains("Xanh"));
System.out.println("Truy truy ArrayList: " + mauSac.get(0));
mauSac.set(1, "Vang");
System.out.println("ArrayList (VANG): " + mauSac);
System.out.println("Tong so phan tu trong ArrayList: " + mauSac.size());
System.out.println("Vi tri thu" + mauSac.indexOf("Trang"));
mauSac.remove("Vang");
mauSac.remove(1);
mauSac.clear();
System.out.println("Kiem tra mang rong: " + mauSac.isEmpty());
}
}
2. Duyệt mảng ArrayList
for (int i = 0; i < duyetMang.size(); i++){
System.out.println("Dung FOR: " + duyetMang.get(i));
}
Dùng FOREACH:
for(Integer phanTu : duyetMang){
System.out.println("Dung FOREARCH: " + phanTu);
}
Ví dụ:
public class DuyetMang {
public static void main ( String[] args) {
ArrayList < Integer > duyetMang = new ArrayList<>();
duyetMang.add(1);
duyetMang.add(2);
duyetMang.add(3);
duyetMang.add(4);
for (int i = 0; i < duyetMang.size(); i++){
System.out.println("Dung FOR: " + duyetMang.get(i));
}
for(Integer phanTu : duyetMang){
System.out.println("Dung FOREARCH: " + phanTu);
}
}
}
3. Ví dụ
Khởi tạo class SVPoly với các biến: hoTen (String), diemTB (Double), sử
dụng ArrayList <SVPoly> để nắm giữ các danh sách sinh viên, viết chương
trình thực việc quản lý với các yêu cầu (người dùng được phép lựa chọn các
tính năng thông qua menu chức năng):
1. Nhập danh sách sinh viên2. Xuất danh sách sinh viên đã nhập3. Xuất danh sách sinh viên theo khoảng điểm4. Tìm sinh viên theo họ tên5. Tìm và sửa sinh viên theo họ tên6. Tìm và xóa theo họ tên7. Kết thúc
Gợi ý:
Mỗi yêu cầu chúng ta cần tạo một hàm riêng (6 hàm) và 1 hàm menu lựa chọn, sau
đó chúng ta khai báo ở hàm main để gọi hàm menu lựa chọn, dùng switch case để
xử lý (gọi hàm tương ứng) lựa chọn của người dùng.
Class SVPoly
code:
public class SVPoly {
public String hoTen;
public Double diemTB;
}
Code chính:
import java.util.ArrayList;
import java.util.Scanner;
public class Vidu5 {
public static void main(String[] args) {
ArrayList< SVPoly > danhSach = new ArrayList < SVPoly > ();
Scanner in = new Scanner(System.in);
int chon;
do{
luaChon();
chon = in.nextInt();
switch(chon){
case 1: nhapSinhVien( danhSach); break;
case 2: xuatSinhVien( danhSach); break;
case 3: xuatDsSvKhoangDiem( danhSach); break;
case 4: timSinhVienTheoTen( danhSach); break;
case 5: timSuaSinhVienTheoTen( danhSach); break;
case 6: timXoaSinhVienTheoTen( danhSach); break;
default:
if(chon==0){
System.out.println("Hen gap lai!!!");
break;
}else{
System.out.println("1-6"); break;
}
}
}while(chon != 0);
}
public static void luaChon(){
System.out.println(">> LUA CHON << " );
System.out.println("+--------------------+");
System.out.println("| 1. Nhap danh sach sinh vien |");
System.out.println("| 2. Xuat danh sach sinh vien |");
System.out.println("| 3. Xuat DSSV theo khoang diem |");
System.out.println("| 4. Tim sinh vien theo ho ten |");
System.out.println("| 5. Tim va sua SV theo ho ten |");
System.out.println("| 6. Tim va xoa SV theo ho ten |");
System.out.println("| 0. Ket thuc |");
System.out.println("+--------------------+");
System.out.print(">> Lua chon cua ban! ");
}
public static void nhapSinhVien(ArrayList < SVPoly > danhSach){
String choice="";
do{
SVPoly sv = new SVPoly();
Scanner in = new Scanner(System.in);
System.out.print("Nhap Ten SV: ");
sv.hoTen = in.nextLine();
System.out.print("Nhap Diem TB: ");
sv.diemTB = in.nextDouble();in.nextLine();
System.out.print("Nhap tiep khong?(y/n)");
choice = in.nextLine();
danhSach.add(sv);
}while(choice.equals("y") || choice.equals("Y"));
}
public static void xuatSinhVien(ArrayList < SVPoly > danhSach){
System.out.println("------ Danh Sach Sinh Vien -----");
for(int i=0; i < danhSach.size(); i++){
System.out.println((i+1)+"\\t" + danhSach.get(i).hoTen+"\\t"+ danhSach.get(i).diemTB);
}
//HOAC
/*
int i = 1;
for(SVPoly sv: danhSach){
System.out.println(i+ "\\t"+sv.hoTen+"\\t"+sv.diemTB);
i++;
}
*/
}
public static void xuatDsSvKhoangDiem(ArrayList < SVPoly > danhSach){
}
public static void timSinhVienTheoTen(ArrayList < SVPoly > danhSach){
Scanner in = new Scanner(System.in);
boolean timThay = false;
System.out.print("Nhap Ten SV can tim: ");
String ten = in.nextLine();
for(int i=0;i < danhSach.size();i++){
if( danhSach.get(i).hoTen.equalsIgnoreCase(ten)){
System.out.println("Da tim thay");
System.out.println("Ten SV: "+ danhSach.get(i).hoTen);
System.out.println("Diem SV: "+ danhSach.get(i).diemTB);
timThay = true;
}
}
if(!timThay)
System.out.println("Khong tim thay!");
}
public static void timSuaSinhVienTheoTen(ArrayList < SVPoly > danhSach){
}
public static void timXoaSinhVienTheoTen(ArrayList < SVPoly > danhSach){
}
}
4. Bài Tập
- Bài 1. Nhập danh sách số thực với (số lượng tùy ý từ bàn phím) sau đó xuất danh sách vừa nhập và tổng của nó.
Code:
import java.util.ArrayList;
import java.util.Scanner;
public class BaiTap_541 {
public static void main(String[] args) {
ArrayList < Double > list = new ArrayList < Double >();
Scanner in = new Scanner(System.in);
//Nhap so thuc x
while(true){
System.out.print("Nhap so thuc x: ");
Double x = in.nextDouble();
list.add(x);in.nextLine();
System.out.print("Nhap them(Y/N):");
if(in.nextLine().equalsIgnoreCase("N")){
break;
}
}
// in so thuc
System.out.println("================");
System.out.println("ArrayList: ");
for(Double x:list){
System.out.print(x + ", ");
}
//Tinh tong
System.out.println();
Double sum=0.0;
for(Double x:list){
sum += x;
}
System.out.println("Tong cac so trong ArrayList la: " + sum);
}
}
No comments:
Post a Comment