Main content:
An introduction to Java collections
How to use the ArrayList class
An Invoice application that uses an array list
How to use the LinkedList class
An enhanced version of the Invoice application
How to work with maps
How to work with legacy collections
-----------------------------------------------
1. An introduction to Java collections
- Sử dụng ArrayList:
2. How to use the ArrayList class
3. An Invoice application that uses an array list
4. How to use the LinkedList class
- LinkedList như một danh sách liên kết.
- Ví dụ:
import java.util.LinkedList;
5. An enhanced version of the Invoice application
6. How to work with maps
Khởi tạo từ interface Map, định nghĩa trước kiểu giá trị
HashMap<Integer, String> hashmap = new HashMap<Integer, String> ();
Chú ý: HashMap chỉ chấp nhận dữ liệu (cả key và value) là các đối tượng. Do đó, các kiểu int, long, double,… không được chấp nhận mà phải dùng Integer, Long, Double,…
Cách thức đưa dữ liệu vào và lấy dữ liệu ra từ đối tượng HashMap:
hashmap.put (key, value); //đưa key và value vào hashmap hashmap.get(key); // Lấy value tương ứng với key trong hashmap
Ví dụ:
7. How to work with legacy collections
Bài tập:
1. Tạo một mảng các đối tượng Sinh Viên, mỗi đối tượng gồm 2 thuộc tính tên và tuổi. Gán một vài giá trị rồi in danh sách ra màn hình.
Mã nguồn:
2. Ví dụ về sử dụng LinkerList
Mã nguồn:
Kết quả:
3. Mô tả một kiểu dữ liệu để lưu trữ dữ liệu con rắn trong game Snake, mỗi thành phần con rắn gồm tọa độ x, tọa độ y.
Viết chương trình mô tả cách lưu trữ dữ liệu con rắn, khởi tạo với độ dài bất kỳ và tạo ra một vị trí ngẫu nhiên mới để con rắn di chuyển tới.
Mã nguồn:
4. Xây dựng một ứng dụng từ điển để lưu trữ, dùng HashMap. Nhập vào một từ và xuất ra ý nghĩa, Viết vòng lặp nhập Y để tiếp tục tra từ và N để kết thúc.
Mã nguồn:
Kết quả:
5. Tạo một mảng các đối tượng Sinh Viên, mỗi đối tượng gồm 2 thuộc tính tên và điểm. Thực hiện các việc sau:
- Sắp xếp theo thứ tự giảm dần theo điểm. In danh sách ra màn hình.
- Sắp xếp theo thứ tự theo a, b, c, ... In danh sách ra màn hình.
Bài giải:
6. Nhập dữ liệu danh sách nhân viên trong công ty. Các phần tử trong danh sách có các thuộc tính họ tên, năm sinh, lương. Các thuộc tính để private.
Viết chương trình nhập dữ liệu từ bàn phím thông tin số nhân viên, thông tin từng nhân viên. Cuối chương trình có menu chọn.
- Nếu ấn 1 thì sắp xếp theo thứ tự tên a, b, c. In danh sách ra màn hình.
- Nếu ấn 2 thì sắp xếp theo mức lương giảm dần từ người cao xuống người thấp. In danh sách ra màn hình.
- Nếu ấn 3 thì nhập vào một tên và thực hiện tìm kiếm thông tin người này trong danh sách. Nếu có thì in thông tin người này ra. Nếu "không có thì in ra không tìm thấy".
Bài giải:
An introduction to Java collections
How to use the ArrayList class
An Invoice application that uses an array list
How to use the LinkedList class
An enhanced version of the Invoice application
How to work with maps
How to work with legacy collections
-----------------------------------------------
1. An introduction to Java collections
- Sử dụng ArrayList:
2. How to use the ArrayList class
3. An Invoice application that uses an array list
4. How to use the LinkedList class
- LinkedList như một danh sách liên kết.
- Ví dụ:
import java.util.LinkedList;
public class Main { public static void main(String[] args) { LinkedList<String> lList = new LinkedList<String>(); lList.add("1"); lList.add("2"); lList.add("3"); lList.add("4"); lList.add("5"); System.out.println("First element of LinkedList is : " + lList.getFirst()); System.out.println("Last element of LinkedList is : " + lList.getLast()); } }
5. An enhanced version of the Invoice application
6. How to work with maps
Khởi tạo từ interface Map, định nghĩa trước kiểu giá trị
HashMap<Integer, String> hashmap = new HashMap<Integer, String> ();
Chú ý: HashMap chỉ chấp nhận dữ liệu (cả key và value) là các đối tượng. Do đó, các kiểu int, long, double,… không được chấp nhận mà phải dùng Integer, Long, Double,…
Cách thức đưa dữ liệu vào và lấy dữ liệu ra từ đối tượng HashMap:
hashmap.put (key, value); //đưa key và value vào hashmap hashmap.get(key); // Lấy value tương ứng với key trong hashmap
Ví dụ:
import java.util.HashMap;
public class Main {
public static void main(String[] args)
{
HashMap<String, String> user = new HashMap<String,
String>();
user.put("ID1", "Nguyen Van
X");
user.put("ID2", "Nguyen Van
Y");
user.put("ID3", "Nguyen Van
Z");
System.out.println(user.get("ID1"));
System.out.println(user.get("ID2"));
System.out.println(user.get("ID3"));
}
}
7. How to work with legacy collections
Bài tập:
1. Tạo một mảng các đối tượng Sinh Viên, mỗi đối tượng gồm 2 thuộc tính tên và tuổi. Gán một vài giá trị rồi in danh sách ra màn hình.
Mã nguồn:
import java.util.ArrayList;
class SinhVien {
public String ten;
public int tuoi;
}
public class Main {
public static void main(String[] args)
{
ArrayList<SinhVien> listSV = new ArrayList(); // Khai báo 1 đối tượng
ArrayList, các phần tử tạo ra từ lớp SinhVien
SinhVien a = new SinhVien();
a.ten = "Nguyen Van A";
a.tuoi = 19;
listSV.add(a); // Thêm đối tượng và
listSV
SinhVien b = new SinhVien();
b.ten = "Nguyen Van B";
b.tuoi = 20;
listSV.add(b);
SinhVien c = new SinhVien();
c.ten = "Nguyen Van C";
c.tuoi = 22;
listSV.add(c);
System.out.println("Thông tin các
sinh viên đã thêm vào ArrayList là: ");
for(int i=0; i<listSV.size(); i++){
System.out.println("Tên: "+listSV.get(i).ten+" Tuổi: "+listSV.get(i).tuoi);
}
}
}
2. Ví dụ về sử dụng LinkerList
Mã nguồn:
import
java.util.LinkedList;
public class Main {
public static void main(String[] a) {
LinkedList<String> list = new
LinkedList<String>();
list.add("A");
list.add("B");
list.add("C");
list.add("D");
list.addFirst("X");
list.addLast("Z");
System.out.println(list);
}
}
Kết quả:
3. Mô tả một kiểu dữ liệu để lưu trữ dữ liệu con rắn trong game Snake, mỗi thành phần con rắn gồm tọa độ x, tọa độ y.
Viết chương trình mô tả cách lưu trữ dữ liệu con rắn, khởi tạo với độ dài bất kỳ và tạo ra một vị trí ngẫu nhiên mới để con rắn di chuyển tới.
Mã nguồn:
4. Xây dựng một ứng dụng từ điển để lưu trữ, dùng HashMap. Nhập vào một từ và xuất ra ý nghĩa, Viết vòng lặp nhập Y để tiếp tục tra từ và N để kết thúc.
Mã nguồn:
import java.util.HashMap;
import java.util.Scanner;
public class Main {
public HashMap<String, String> dict = new HashMap<String,
String>();
public static void main(String[] args)
{
Main dictionary = new Main();
// add some test entries to
dictionary
dictionary.addEntry("begin", "bắt đầu");
dictionary.addEntry("end", "kết thúc");
dictionary.addEntry("music", "âm nhạc");
dictionary.addEntry("movie", "điện ảnh");
dictionary.addEntry("sport", "thể
thao");
dictionary.addEntry("easy", "dễ");
Scanner scanner = new Scanner(System.in);
String input, choose;
do {
System.out.print("Nhập từ cần
tra: ");
input = scanner.nextLine();
String strMeaning =
dictionary.getMeaning(input);
if (strMeaning == null) {
System.out.println("Không có
trong từ điển");
} else {
System.out.println("Nghĩa là:
" +
strMeaning);
}
System.out.print("Tiếp tục Y/N:
");
choose =
scanner.nextLine();
} while
(choose.equalsIgnoreCase("Y"));
System.out.println("Kết thúc");
scanner.close();
}
public void addEntry(String eng,
String vie) {
dict.put(eng, vie);
}
public String getMeaning(String eng) {
return dict.get(eng);
}
}
Kết quả:
5. Tạo một mảng các đối tượng Sinh Viên, mỗi đối tượng gồm 2 thuộc tính tên và điểm. Thực hiện các việc sau:
- Sắp xếp theo thứ tự giảm dần theo điểm. In danh sách ra màn hình.
- Sắp xếp theo thứ tự theo a, b, c, ... In danh sách ra màn hình.
Bài giải:
package dssv;
public class SinhVien {
String ten;
double diem;
public SinhVien(String ten,
double diem) {
this.ten = ten;
this.diem = diem;
}
public String getName() {
return ten;
}
public double getDiem() {
return diem;
}
public void setName(String
ten) {
this.ten = ten;
}
public void setDiem(double
diem) {
this.diem = diem;
}
public void Print() {
System.out.println(ten
+ " - " + diem);
}
}
|
package dssv;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Scanner;
public class DSSV {
public static
ArrayList<SinhVien> ds = new ArrayList<>();
public static void
main(String[] args) {
Scanner sc = new
Scanner(System.in);
String continus =
"";
do {
System.out.print("Ten:");
String ten =
sc.next();
System.out.print("Diem:");
double diem =
sc.nextDouble();
SinhVien sv = new
SinhVien(ten, diem);
ds.add(sv);
System.out.print("Tiep tuc Y/N:");
continus =
sc.next();
} while
(continus.equalsIgnoreCase("Y"));
//Sap xep theo diem
SapXepDiem(ds);
//print
InDanhSach(ds);
SapXepTen(ds);
//print
InDanhSach(ds);
}
public static void
SapXepDiem(ArrayList<SinhVien> arraylist) {
Collections.sort(ds,
new Comparator<SinhVien>(){
@Override
public int
compare(SinhVien sv1, SinhVien sv2) {
if (sv1.diem
< sv2.diem) {
return -1;
} else {
return 1;
}
}
});
}
public static void
SapXepTen(ArrayList<SinhVien> arraylist) {
Collections.sort(ds,
new Comparator<SinhVien>(){
@Override
public int
compare(SinhVien sv1, SinhVien sv2) {
return (sv1.ten.compareTo(sv2.ten));
}
});
}
public static void
InDanhSach(ArrayList<SinhVien> arraylist) {
for(SinhVien sv :
arraylist) {
sv.Print();
}
}
}
|
6. Nhập dữ liệu danh sách nhân viên trong công ty. Các phần tử trong danh sách có các thuộc tính họ tên, năm sinh, lương. Các thuộc tính để private.
Viết chương trình nhập dữ liệu từ bàn phím thông tin số nhân viên, thông tin từng nhân viên. Cuối chương trình có menu chọn.
- Nếu ấn 1 thì sắp xếp theo thứ tự tên a, b, c. In danh sách ra màn hình.
- Nếu ấn 2 thì sắp xếp theo mức lương giảm dần từ người cao xuống người thấp. In danh sách ra màn hình.
- Nếu ấn 3 thì nhập vào một tên và thực hiện tìm kiếm thông tin người này trong danh sách. Nếu có thì in thông tin người này ra. Nếu "không có thì in ra không tìm thấy".
Bài giải: