/*auto readmore*/ /*auto readmore*/ /* an hien script*/ // an hien password /*an hien ma chuong trinh cong tru */ /*Scrollbox thanh cuon*/ /***Nhung CODE***/ /* dòng xanh dòng trắng */ /* https://cdnjs.com/libraries/prism lay thu vien, can vao ten file ma goi 1. copy link vao vi du:prism-python.min.js 2. ten ngon nua la python */ /*=== New posts ===*/ /*header slider*/ /*=== bai viet lien quan===*/ /*===tabcode===*/

[Tự Học Java] MOB1014-Java 1 - Bài 5 - ArrayList P1/2

NỘI DUNG:

1. ArrayList
2. Duyệt mảng ArrayList
3. Ví dụ
4. Bài tập

THỰC HIỆN:

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ú ý:
  • 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ó.
Cách khai báo:
    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
    

    Các phương thức (method) hay dùng của ArrayList
    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
    Dùng FOR:
    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ên
    2. Xuất danh sách sinh viên đã nhập
    3. Xuất danh sách sinh viên theo khoảng điểm
    4. Tìm sinh viên theo họ tên
    5. Tìm và sửa sinh viên theo họ tên
    6. Tìm và xóa theo họ tên
    7. 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);
        }
    }
    



    Xong!

    No comments:

    Post a Comment

    /*header slide*/