/*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 Thao Tác Nâng Cao - Collections P2/2

NỘI DUNG:
1. Thao tác tập hợp
2. Thao tác ArrayList nâng cao - Collections
3. Bài tập



THỰC HIỆN
1. Thao tác tập hợp

 

Phương Thức Mô Tả Ví Dụ Giải Thích
addAll(Collection) Phương thức được sử dụng để thêm tập hợp các phần tử vào danh sách mảng (hay cộng 2 danh sách mảng) Danh sách mảng a1 có các phần tử [3, 4]; a5 có các phần tử [4, 5]; a1.addAll(a2) Tạm hiểu là lấy danh sách mảng a1 + a2, lúc này kết quả sẽ là [3, 4, 4, 5]
removeAll(Collection) Hiệu 2 danh sách mảng a1.removeAll(a2) Kết quả sẽ là [3]; chỉ lấy a1, và loại bỏ các phần tử trùng nhau của danh sách mảng a1 và a2
retainAll(Collection) Chỉ lấy phần giao nhau của 2 danh sách mảng a1.retainAll(a2) Kết quả là [4]
boolean containsAll(Collection) Kiểm tra sự tồn tại (kiểm tra xem danh sách mảng này có phải là danh sách mảng con của danh sách mảng kia hay không) a1.containsAll(a2) Kết quả sẽ là false vì danh sách mảng a2 không phải là con của danh sách mảng a1, hay danh sách mảng a1 không chứa danh sách mảng a2
toArray(T[]) Chuyển đổi arraylist sang array ArrayList aList1 có các phần tử [2, 3, 4, 5]; aList1.array(tenMangMoi) Array: 2, 3, 4, 5 (KHÔNG CÓ ngoặc vuông)


Ví dụ:

import java.util.ArrayList;

public class Vidu_521 {
    public static void main(String[] args) {
        ArrayList  < Integer >  a1 = new ArrayList < Integer > ();
        a1.add(3);
        a1.add(4);
        ArrayList < Integer >  a2 = new ArrayList < Integer > ();
        a2.add(4);
        a2.add(5);
        System.out.print("a1: ");
        for(Integer x : a1){
            System.out.print(x+ " ");
        }
        System.out.print("\na2: ");
        for(Integer x : a2){
            System.out.print(x+ " ");
        }
        //--------------
        a1.addAll(a2);// HOP 2 TAP HOP
        System.out.print("\nHop 2 ArrayList(Cong 2 ArrayList):");
        for(Integer x : a1){
            System.out.print(x + " ");
        }
        //---------------
//        System.out.print("\nGiao 2 tap hop:");
//        a1.retainAll(a2);//GIAO 2 TAP HOP
//        for(Integer x : a1){
//            System.out.print(x+ " ");
//        }
        //--------------
//        System.out.print("\nHieu 2 tap hop: ");
//        a1.removeAll(a2);//HIEU 2 TAP HOP
//        for(Integer x : a1){
//            System.out.print(x+ " ");
//        }
    }
    
}
Noted: Bỏ chú thích từng đoạn để kiểm tra

2. Thao tác ArrayList nâng cao - Collections

Phương Thức Mô Tả Ví Dụ Giải Thích
int binarySearch (List list, Object key) Tìm kiếm nhị phân là một thuật toán tìm kiếm được sử dụng trong một mảng đã được sắp xếp bằng cách chia đôi mảng cần tìm kiếm nhiều lần
void fill (List list, Object value) Gán đồng loạt một giá trị chỉ định cho tất cả các phần tử trong một mảng. Arrays.fill(a, 10) Gán tất cả các phần tử của mảng có có giá trị là 10
void shuffle (List list) Xáo trộn ngẫu nhiên các phần tử của mảng
void sort (List list) Sắp xếp mảng theo giá trị tăng dần
void reverse (List list) Đảo ngược mảng Chúng ta có mảng: A, B, C, D; khi dùng hàm reverse sẽ cho kết quả: D, C, B, A
void rotate (List list, int distance) Để rotate các phần tử của List phụ thuộc vào tham số thứ 2 của phương thức đó trong Java
void swap(List list, int i, int j) Hoán đổi vị trí cho nhau Giá trị của phần thứ i và j sẽ hoán đổi cho nhau


Ví dụ:
import java.util.ArrayList;
import java.util.Collections;

public class Vidu_522 {
    public static void main(String[] args) {
        ArrayList < Integer > a = new ArrayList < Integer >();
        a.add(3);
        a.add(9);
        a.add(8);
        a.add(2);
        System.out.println("Array ban dau:");
        for(Integer x:a){
            System.out.print(x + " ");
        }
        System.out.println("\nSwap vi tri 0-2:");
        Collections.swap(a, 0, 2);
        for(Integer x:a){
            System.out.print( x + " ");
        }
        System.out.println("\nSort:");
        Collections.sort(a);
        for(Integer x:a){
            System.out.print(x + " ");
        }
        System.out.println("\nReverse:");
        Collections.reverse(a);
        for(Integer x:a){
            System.out.print(x+" ");
        }
    }
}

run:
Array ban dau:
3 9 8
Swap vi tri 0-2:
8 9 3
Sort:
2 3 8 9 
Reverse:
9 8 3 2 
BUILD SUCCESSFUL (total time: 0 seconds)

3. Bài tập
  • 5.4.2
Viết chương trình thực hiện các chức năng sau
1. Nhập danh sách họ và tên
2. Xuất danh sách vừa nhập

3. Xuất danh sách ngẫu nhiên
4. Sắp xếp giảm dần và xuất danh sách
5. Tìm và xóa họ tên nhập từ bàn phím
0. Kết thúc


Gợi ý: Tương tự mỗi yêu cầu chúng ta nên làm mỗi yêu cầu là một hàm riêng và thêm hàm về menu lựa chọn để gọi các yêu cầu và dùng Collections(shuffle, sort, reverse, remove, ..) để thực hiện các yêu cầu

Code:
import java.util.ArrayList;
import java.util.Collections;
import java.util.Scanner;

public class BaiTap_542 {
    public static void main(String[] args) {
        ArrayList < String > danhSach = new ArrayList < String >();
        Scanner in = new Scanner(System.in);
        int chon;
        do{
            luaChon();
            chon = in.nextInt();
            switch(chon){
                case 1: nhapDanhSach(danhSach); break;
                case 2: xuatDanhSach(danhSach); break;
                case 3: ngauNhien(danhSach); break;
                case 4: sapXepTangDan(danhSach); break;
                case 5: xoaDanhSach(danhSach); break;                
                default:
                    if(chon==0){
                        System.out.println("Hen gap lai!!!");
                        break;
                    }else{
                        System.out.println("1-5"); break;
                    }                    
            }
        }while(chon != 0);
    }
    
    public static void luaChon(){
        System.out.println(" >>  LUA CHON < < ");
        System.out.println("+--------------------+");
        System.out.println("| 1. Nhap danh sach ho va ten             |");
        System.out.println("| 2. Xuat danh sach vua nhap              |");
        System.out.println("| 3. Xuat danh sach ngau nhien            |");
        System.out.println("| 4. Sap xep tang dan va xuat danh sach   |");
        System.out.println("| 5. Tim va xoa ho ten nhap tu ban phim   |");
        System.out.println("| 0. Ket thuc                             |");
        System.out.println("+--------------------+");
        System.out.print(" >>  Lua chon cua ban!  ");  
    }
    
    public static void nhapDanhSach(ArrayList < String >  danhSach){
        String choice="";
        do{            
            Scanner in = new Scanner(System.in);
            System.out.print("Nhap Ho Ten: ");
            String hoten = in.nextLine();           
            System.out.print("Nhap tiep kg?(y/n)");
            choice = in.nextLine(); 
            danhSach.add(hoten);
        }while(choice.equalsIgnoreCase("y"));
    }
    
    public static void xuatDanhSach(ArrayList < String >  danhSach){
        System.out.println("------ Danh Sach Ten -----");
        int i=1;
        for(String x:danhSach){            
            System.out.println(i+"\t"+x);
            i++;
        }
    }
    
    public static void sapXepTangDan(ArrayList < String >  danhSach){
        System.out.println("------ Danh Sach Tang Dan -----");
        int i=1;
        Collections.sort(danhSach); // mat dinh sap xep tang dan
//        Collections.reverse(danhSach); // dao nguoc danh sach de co danh sach giam dan
        for(String x:danhSach){            
            System.out.println(i+"\t"+x);
            i++;
        }
    }
    
    public static void xoaDanhSach(ArrayList < String >  danhSach){
        Scanner in = new Scanner(System.in);
        boolean timThay=false;
        System.out.print("Nhap Ten: ");
        String ten = in.nextLine();
        for(int i=0;i < danhSach.size();i++){
            if(danhSach.get(i).equalsIgnoreCase(ten)){
                danhSach.remove(i);
                System.out.println("Da xoa!");
                timThay=true;
            }
        }
        if(!timThay)
            System.out.println("Khong tim thay!");
    }
    
    public static void ngauNhien(ArrayList < String >  danhSach){
        System.out.println("------ Danh Sach Ngau Nhien -----");
        int i=1;
        Collections.shuffle(danhSach);
        for(String x:danhSach){            
            System.out.println(i+"\t"+x);
            i++;
        }
    }
}

  • 5.4.3
Xây dựng ứng dụng quản lý sản phẩm (thông tin mỗi sản phẩm gồm tên và giá) theo menu sau
1. Nhập danh sách sản phẩm từ bàn phím
2. Sắp xếp giảm dần theo giá và xuất ra màn hình
3. Tìm và xóa sản phẩm theo tên nhập từ bàn phím

4. Xuất giá trung bình của các sản phẩm

Gợi ý:
Tổ chức ứng dụng tương tự bài 2
Sử dụng Collections.sort(list, comparator) để sắp xếp danh sách sản phẩm
với tiêu chí sắp xếp được định nghĩa như sau
Comparator<SanPham> comp = new Comparator<SanPham>() {
@Override
public int compare(SanPham o1, SanPham o2) {
return o1.donGia.compareTo(o2.donGia);
}
};



Xong!

No comments:

Post a Comment

/*header slide*/