Collection


Bài số 5 của Blog Android cơ bản: http://wp.me/p6SFw5-rk

Nội dung đạt được

– Yêu cầu: Đã có kiến thức hướng đối tượng với java
– Tài liệu cần tham khảo: Collection
– Tài liệu cần tham khảo: VietJack
– Tìm hiểu List- ArrayList
– Tìm hiểu Set – HashSet

ArrayList

1. ArrayList

– Là mảng động (kích thước mảng thay đổi được).
– Cho phép duy trì thứ tự dữ liệu khi thêm vào mảng.

2. Tạo ArrayList
ArrayList cho phép ta dùng hoặc không dùng Generics để kiểm tra kiểu dữ liệu được thêm vào. Trong lập trình android, khuyên bạn nên dùng generics để giảm thiểu lỗi xuất hiện trong quá trình sử dụng của người dùng.

ArrayList myArrayL= new ArrayList(); // không có generics
ArrayList<String> myArrayL= new ArrayList<String>(); // có generics

3. Các hàm thông dụng của ArrayList

Function

Discription

Example

add()

Thêm 1 phần tử

a.add(hello);

size()

Tổng số phần tử hiện tại

int x=a.size();

indexOf()

Tìm vị trí của phần tử trong tập hợp

int y=a.indexOf(“hello”);

Kiểm tra phần tử có trong tập hợp không

boolean t=a.contains(“Hi”);

isEmpty()

Kiểm tra tập hợp có rỗng không

boolean emp=a.isEmpty();

remove()

Xóa 1 phần tử ra khỏi tập hợp

a.remove(1); //xoa theo index

a.remove(“Hi”);//xoa theo Object

toArray()

Ép ArrayList thành Array

String[] array= new String[a.size()];

a.toArray(array);

set()

– Thay phần tử dựa vào index

– Duyệt từng phần tử

a.set(1, “Ha”);

get()

Lấy phần tử

4. Duyệt ArrayList

String strChuoi1="";
for (String item : myArrayL)
 strChuoi1 += item+"," ;

//hoặc
String strChuoi2="";
for (int i=0; i< myArrayL.size(); i++)
 strChuoi2 +=myArrayL.get(i) + "," ;

HashSet

1. HashSet

– Là mảng động, kích thước thay đổi được.
– Không duy trì thứ tự dữ liệu khi thêm vào.
– Giống ArrayList một số hàm thông dụng như: add, remove, size, isEmpty, toArray.
– Khác ArrayList: không cho phép đưa vào 2 phần tử (dữ liệu) giống nhau.

HashSet<String> myHashS= new HashSet<String>(); 

2. Duyệt HashSet

String strChuoi="";
Iterator ite;
ite =myHashS.iterator();
while(ite.hasNext())
{
    strChuoi += ite.next().toString();
}

3. Các phần tử trong HashSet

myHashS.add("Chao");
myHashS.add("cac");
myHashS.add("ban");
myHashS.add("Chao");   //không thêm được
myHashS.add("ban");    //không thêm được

// 2 phần tử cuối của myHashS trả về false và
//không thêm vào được vì đã tồn tại trong HashSet

// Dữ liệu khi duyệt xuất ra là "cacChaoban" hoặc "banChaocac"
// như vậy có thể hiểu HashSet không giữ đúng thứ tự khi xuất dữ liệu

Xổ số đặc biệt (bài tập 2)

Nội dung:

– Tạo 1 dãy số nguyên có giá trị ngẫu nhiên gồm 20 phần tử (từ 1 đến 90)
– Người dùng nhập vào 1 dãy số gồm 5 phần tử (mỗi phần tử có giá trị từ 1 đến 90)
– Nhấp vào nút check thì hiển thị dãy ngẫu nhiên 20 phần tử đã tạo. Đồng thời cho biết kết quả: Có bao nhiêu phần tử người dùng nhập có nằm trong dãy số ngẫu nhiên. Có bao nhiêu phần tử người dùng nhập đúng giá trị và đúng vị trí của dãy ngẫu nhiên 20 phần tử.

Xem screenshot:
Screenshot_2016-09-17-21-51-12    Screenshot_2016-09-17-21-56-50
Các bước thực hiện:

a. Tạo project
b. Tạo 2 ArrayList kiểu nguyên (arrayL1 và arrayL2). Fùng randomtao5 số ngẫu nhiên cho arrayL1
c. Bắt sự kiện click cho nút Check. Lấy chuỗi người nhập, cắt thành mảng chuỗi, ép thành interger rồi đưa vào ArrayList arrayL2.
d. Dùng for duyệt ArrayList arrayL1.
e. Dùng for để xét phần tử của arrayL2 có nằm trong arrayL1 hay không và dùng for để so sánh từng cặp để tính vị trí đúng của arrayL1 và arrayL2

Cần hỗ trợ bạn cứ để lại bình luận nha. Với những thuộc tính của các TextView, EditText, … bạn hãy chủ động tìm hiểu và thử để có giao diện app tốt hơn 🙂


Cám ơn bạn đã theo dõi blog.
Nhiều ngày tốt lành!

Advertisements

Cho mình biết cảm nhận của bạn nhé

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

w

Connecting to %s