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
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 2Swap vi tri 0-2:8 9 3 2Sort:2 3 8 9Reverse:9 8 3 2BUILD 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
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
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
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
- 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!