You are on page 1of 36

CẤU TRÚC DỮ LIỆU VÀ

GIẢI THUẬT
NHÓM 5
slidesmania.com

▹ TÀI LIỆU NGHIÊN CỨU :
▹ LIST , ARRAY LIST
slidesmania.com
 CẤU TẠO CỦA LIST, ARRAY LIST
 CƠ CHẾ HOẠT ĐỘNG CỦA LIST, ARRAY LIST
 KHỞI TẠO LIST, ARRAY LIST

 THÊM, XÓA PHẦN TỬ TRONG LIST, ARRAY LIST


 TÌM KIẾM THÔNG TIN TRONG LIST, ARRAY LIST
 DUYỆT CÁC PHẦN TỬ TRONG LIST , ARRAY LISTCÁC THAO TÁC KHÁC
TRONG LIST , ARRAY LIST
 CÁC THAO TÁC KHÁC TRONG LIST , ARRAY LIST
 ƯU ĐIỂM VÀ NHƯỢC ĐIỂM CỦA ARRAYLIST KHI SO SÁNH VỚI ARRAY
slidesmania.com
CẤU TẠO CỦA LIST, ARRAY LIST

Cấu tạo của List và Array List


slidesmania.com
:
Kết quả
slidesmania.com
Cài đặt các giải thuật cho các thao tác
•Các phương thức của list:
1.1 Phương thức add:

1.2 Phương thức remove:

1.3 Phương thức get:


slidesmania.com
1.4 Phương thức set:

• Các phương thức của Arraylist:


2.1 Phương thức add:
slidesmania.com
2.2 Phương thức remove:

:
slidesmania.com
2.3 Phương thức get

Người tham gia giao thông ý thức còn kém, ít hiểu


biết về pháp luật, sử dụng chất ma túy, rượu bia khi
tham giagiao thông, chạy xe quá tốc độ cho phép,
phóng nhanh vượt ẩu...là những nguyên nhân dẫn
đến tai nạn giao thông.

2.4 Phương thức set:


slidesmania.com
CƠ CHẾ HOẠT ĐỘNG CỦA LIST, ARRAY LIST

 LIST
 List interface được triển khai bởi nhiều lớp trong Java như ArrayList , LinkedList, Vector
và Stack
 List cho phép thêm hoặc xóa các phần tử một cách linh hoạt mà không cần phải chỉ định
kích thước của danh sách trước.
 Lấy số lượng phần tử trong một danh sách
 Cho phép phần tử trùng lặp trong danh sách
 Các phần tử được truy cập thông qua chỉ số
 Các phần tử có thể được lặp lại và hiển thị
slidesmania.com

 Sắp xếp các phần tử trong list


Một số phương thức của List

 add() - thêm một phần tử vào list


 addAll() - thêm tất cả các phần tử của list này vào list khác
 get() - giúp truy cập ngẫu nhiên các phần tử từ list
 tterator() - trả về đối tượng iterator có thể được sử dụng để truy cập tuần tự các phần
tử của list
 set() - thay đổi các phần tử của list
 remove() - xóa một phần tử khỏi list
 removeAll() - xóa tất cả các phần tử khỏi list
 clear() - xóa tất cả các phần tử khỏi list (hiệu quả hơn removeAll())
 size() - trả về độ dài của list
slidesmania.com
 ARRAYLIST

Cơ chế hoạt động của ArrayList trong Java:


 Arraylit hoạt động bằng cách sử dụng 1 mảng để lưu trữ phần tử
 Khởi tạo Arraylist
 Thêm các phần tử
 Truy cập vào các phần tử
 Thay đổi các phần tử
 Loại bỏ các phần tử
 Sắp xếp các phần tử
slidesmania.com
 Arraylist hỗ trợ các phương thức như:
• add() – thêm một phần tử vào list
• addAll() – thêm tất cả các phần tử của list này vào list khác
• get() – giúp truy cập ngẫu nhiên các phần tử từ list
• iterator() – trả về đối tượng lặp có thể được sử dụng để truy cập tuần tự các phần
tử của list
• set() – thay đổi các phần tử của list
• remove() – xóa một phần tử ra khỏi list
• removeAll() – xóa tất cả các phần tử ra khỏi list
• clear() – xóa tất cả các phần tử khỏi list (hiệu quả hơn removeAll())
• size() – trả về độ dài của list
• toArray() – chuyển đổi một list thành một mảng
slidesmania.com
KHỞI TẠO LIST, ARRAY LIST

CÁCH 1: Sử dụng Array.asList()

Cú pháp: List<Type>arr = Arrays.asList(…);


Output: {milo,tina,luca,ola}

CÁCH 2: Sử dụng add()

Output:{1,2,3,4}
slidesmania.com
CÁCH 3: Sử dụng Collectión.ncopies

Cú pháp: List<Type> arrays = new


ArrayList<>(Collections.nCopies(count, “element”));
Output: 5 lần “deft”

CÁCH 4: Khởi tạo từ một collection

Cú pháp: List<Type> arrays = new ArrayList<>(collection);


slidesmania.com

Output là 1,2,3
THÊM, XÓA PHẦN TỬ TRONG LIST, ARRAY LIST
Thêm phần tử
Ý tưởng:
import java.util.ArrayList;
import java.util.Scanner;
public class ArrayListExample {
public static void main(String[] args) {
ArrayList<Integer> arrayList = new ArrayList<Integer>();//khởi tạo một đối tượng arrayList
Scanner scanner = new Scanner(System.in);//đọc dữ liệu người dùng nhập vào
int n;
System.out.print("Nhap so phan tu muon them vao: ");
n = scanner.nextInt();//nhập 1 giá trị nguyên đầu tiên vào
for (int i = 0; i < n; i++) {
System.out.print("Nhap phan tu thu " + (i + 1) + ": ");
int element = scanner.nextInt();
slidesmania.com

addToArrayList(arrayList, element);//thêm giá trị vừa nhập vào arraylist


}
public static void addToArrayList(ArrayList<Integer> arrayList, int element) {
arrayList.add(element);
}
Xóa phần tử
Ý tưởng:
import java.util.ArrayList;
import java.util.Scanner;

public class ArrayListExample {


public static void main(String[] args) {
ArrayList<Integer> arrayList = new ArrayList<Integer>();//khởi tạo một đối tượng arrayList
Scanner scanner = new Scanner(System.in);//đọc dữ liệu người dùng nhập vào
int n;
System.out.print("Danh sach ban dau: " + arrayList);
System.out.print("\nNhap gia tri can xoa: ");
int valueToRemove = scanner.nextInt();//nhập giá trị cần xóa
removeFromArrayList(arrayList, valueToRemove);//xóa phần tử vừa nhập ra khỏi arraylist
System.out.println("Danh sach sau khi xoa phan tu " + valueToRemove + ": " + arrayList);
}
slidesmania.com

public static void removeFromArrayList(ArrayList<Integer> arrayList, int value) {


arrayList.removeIf(element->element == value);
}
}
Kết quả thu được
:
slidesmania.com
TÌM KIẾM THÔNG TIN TRONG LIST, ARRAY LIST

Để tìm kiếm một phần tử trong ArrayList thì chúng ta có 3 phương pháp tìm kiếm như sau:
 Tìm kiếm trực tiếp phần tử.

Kết quả thu được :


slidesmania.com
 Tìm kiếm vị trí xuất hiện đầu tiên của 1 phần tử trong ArrayList.
:

Kết quả thu


được :
slidesmania.com
 Tìm kiếm vị trí xuất hiện cuối cùng của 1 phần tử trong List.

Kêt quả thu được :


slidesmania.com
DUYỆT CÁC PHẦN TỬ TRONG LIST , ARRAY LISTCÁC
THAO TÁC KHÁC TRONG LIST , ARRAY LIST

1.Ý tưởng
‒ Để duyệt các phần tử mà người dùng nhập từ bàn phím khỏi List và ArrayList
trong Java, chúng ta có thể sử dụng các phương thức như:
 forEach và biểu thức lambda.
 iterator ().
 listIterator ().
 Vòng lặp for-each
 Vòng lặp với chỉ số
slidesmania.com
2. Ví dụ minh họa:
 Khai báo vào đưa giá trị vào ArrayList:
:
slidesmania.com
 Phương pháp forEach và biểu thức lambda:

Kết
quả:
slidesmania.com
 Phương pháp iterator ():

Kết quả:
slidesmania.com
 Phương pháp listIterator ():

Kết quả:
slidesmania.com
 Phương pháp vòng lặp for-each:

Kết quả:
slidesmania.com
 Phương pháp vòng lặp với chỉ số:

Kết quả:
slidesmania.com
CÁC THAO TÁC KHÁC TRONG LIST , ARRAY LIST

1. Một số hàm thêm


 void add(int index, E element)
Kết quả :
slidesmania.com
 Boolean addAll(Collection<? extends E> c)

Kết
quả :
slidesmania.com
 Boolean addAll(int index , Collection<? extends E> c)

:
slidesmania.com

Kết
quả :
2. Một số hàm xóa
 E remove(int index)
:

Kết quả:
slidesmania.com
 Boolean removeAll(Collection<?> c)

:
slidesmania.com

Kết quả:
 Void clear()

Kết quả:
slidesmania.com
ƯU ĐIỂM VÀ NHƯỢC ĐIỂM CỦA ARRAYLIST
KHI SO SÁNH VỚI ARRAY
 Ưu điểm
 Kích thước của ArrayList có thể thay đổi tăng hoặc giảm tùy vào số lượng phần tử trong nó.
 Thêm và xóa phần tử ở bất kì vị trí nào trong mảng một cách nhanh chóng, hiệu quả.
 Có nhiều phương thức hỗ trợ các thao tác như removeAll-xóa tất cả, searching-tìm kiếm, iterations-
duyệt mảng, retainAll-sửa phần tử,…
 Một ArrayList có thể chứa nhiều loại đối tượng như Integer, String, Scanner, hay một đối tượng do
người dùng tự khai báo.
 Nhược điểm
 Kích thước mảng cố định và không thể thay đổi sau khi mảng được tạo.
 Không thể thêm phần tử sau khi mảng đã đầy.
slidesmania.com

 Việc thêm và xóa phần tử giữa mảng gây nhiều khó khăn.
slidesmania.com

You might also like