Xin chào tất cả các bạn, chúng ta lại gặp nhau trong loạt bài viết về Java.
Trong quá trình học lập trình chúng ta liên tục phải học về các khái niệm mới, công nghệ mới, việc này giúp ích rất nhiều trong việc viết chương trình của chúng ta.
Và hôm nay, như mọi khi chúng ta sẽ tìm hiểu về một khái niệm mới cũng như làm quen với một lớp khá là quan trọng trong Java, đó là LinkedHashMap.
![LinkedHashMap trong Java](/pic/News/images/tin-tuc-cong-nghe-va-lap-trinh/linkedhashmap-trong-java.jpg)
LinkedHashMap trong Java
Đầu tiên, chúng ta sẽ cùng nhau tìm hiểu LinkedHashMap là gì và khi nào thì nên sử dụng LinkedHashMap trong Java?
1. LinkedHashMap là gì? Khi nào nên sử dụng LinkedHashMap
LinkedHashMap là gì?
Giống như HashMap, LinkedHashMap trong Java là một lớp triển khai interface (giao diện) Map trong Java, LinkedHashMap cho phép chúng ta gán value (giá trị) cho một key (khóa).
Khác biệt lớn nhất giữa LinkedHashMap và HashMap đó là:
-
Dữ liệu của HashMap duy trì KHÔNG theo thứ tự
-
Còn LinkedHashMap thì CÓ.
Ngoài ra thì về cách sử dụng cũng như trường hợp sử dụng cũng không có nhiều khác biệt giữa 2 lớp này.
Chỉ là một số trường hợp, các bạn cần dữ liệu liên kết với nhau theo một thứ tự nhất định thì lúc này các bạn cần sử dụng LinkedHashMap.
> Tìm hiểu thêm về LinkedList trong Java
Giả sử trong trường hợp các bạn băm nhỏ dữ liệu ra để dễ trao đổi, khi đó dữ liệu cần theo một thứ tự để có thể gộp các mảng băm lại trở thành dữ liệu hoàn chỉnh ban đầu.
Trong khuôn khổ bài viết hôm nay, mình chỉ tập trung vào việc sử dụng LinkedHashMap chứ không tập trung vào khác nhau giữa LinkedHashMap và HashMap nên các bạn sẽ thấy bài này và bài HashMap tương đối giống nhau.
Thế này, như thường lệ chúng ta sẽ liên hệ với một ví dụ thực tế để dễ hiểu hơn về LinkedHashMap nhé.
Ví dụ như các bạn đang có một loạt các từ khóa thường xuyên sử dụng trong một văn bản, để ngắn gọn thì ta sẽ dùng cách viết tắt.
Hay nói cách khác là chuyển từ một đoạn văn bản dài sang một đoạn văn bản ngắn hơn, mà khi đọc người dùng sẽ hình dung ra được ý muốn truyền tải của đoạn văn bản dài.
Ví dụ như một số từ viết tắt thường được sử dụng trên thế giới: WTO ( World Trade Organization), WHO (World Health Organization), NATO (North Atlantic Treaty Organization), … .
Trong lập trình cũng vậy, đôi khi có những từ mà chúng ta phải viết đi viết lại nhiều lần và nếu viết như cách truyền thống thì vẫn được.
Tuy nhiên chúng ta có thể áp dụng cách viết tắt này, chính là sử dụng LinkedHashMap.
LinkedHashMap trong Java không chỉ sử dụng cho chuỗi (String) và còn có thể sử dụng với nhiều kiểu dữ liệu, lớp khác nhau.
Vậy là chúng ta có lẽ đã hiểu hơn LinkedHashMap trong Java là gì rồi nhỉ?
Giờ chúng ta sẽ đi đến phần tiếp theo đó là khi nào thì nên sử dụng LinkedHashMap?
Khi nào thì nên sử dụng LinkedHashMap?
Như đã nói ở trên, LinkedHashMap được sử dụng khi ta cần định nghĩa cho một key nào đó, hay nói cách khác là gán value cho một key nào đó.
Trong câu nói trên tôi cũng đã áp dụng LinkedHashMap vào đó, ta có thể thấy khi nói “key” ta sẽ hiểu là một “khóa” và khi nói “value” thì ta sẽ hiểu đó là “giá trị”. Đó là LinkedHashMap.
Thêm một ví dụ trường hợp sử dụng nữa, số pi là một số rất đặc biệt và được sử dụng nhiều trong toán học, tuy nhiên để ghi hết số pi ra thì hiện nay khoa học vẫn chưa làm được điều đó.
Do vậy, khi sử dụng số pi người ta thường làm tròn nó đến một số lượng số thập phân nhất định (giả sử là 15 số).
Chẳng lẽ mỗi lần muốn sử dụng số pi thì ta phải ghi con số dài ngoằng kia ra?
Không, chúng ta sẽ sử dụng LinkedHashMap để lưu giá trị cho nó, khi sử dụng ta chỉ việc gọi “pi” vậy là ta đã có giá trị của một số pi có độ dài thập phân là 15 chữ số.
Tuy nhiên, các bạn sẽ có một câu hỏi đó là tại sao không sử dụng biến để lưu giá trị mà phải dùng LinkedHashMap?
Giả sử như chúng ta có hàng trăm thậm chí hàng ngàn hằng số cần khái niệm như vậy trong chương trình thì sao?
Nếu sử dụng biến thì chúng ta sẽ phải tạo từng ấy biến à?
Như vậy sẽ rất phức tạp, và LinkedHashMap sẽ giải quyết vấn đề đó.
2. Cách thao tác với LinkedHashMap trong Java
Tiếp theo đây chúng ta sẽ cùng làm một ví dụ để bạn hiểu cách LinkedHashMap hoạt động.
Để sử dụng được LinkedHashMap thì chúng ta cần phải import thư viện của nó vào bằng câu lệnh import:
import java.util.LinkedHashMap;
public static void main(String[] args)
{
// khai báo 1 LinkedHashMap tên hangSo
// mỗi phần tử trong hangSo bao gồm 2 phần
// key (String) và value (Float)
LinkedHashMap<String, Float> hangSo= new LinkedHashMap<>();
// khai báo 1 LinkedHashMap tên vietTat
// mỗi phần tử trong vietTat bao gồm 2 phần
// key (String) và value (String)
// có kích thước khởi tạo = 10
LinkedHashMap<String, String> vietTat= new LinkedHashMap<>(10);
// thêm một phần tử vào hangSo
hangSo.put("pi", 3.14159 26535 89793f);
// thêm một phần tử vào vietTat
vietTat.put("WTO", "World Health Organization");
// xóa một phần tử trong LinkedHashMap
hangSo.remove("pi");
// thay đổi giá trị cho key
hangSo.replace("pi", 3.14f);
//hoặc
hangSo.replace("pi", 3.14159 26535 89793f, 3.14f);
// tuy 2 cái có tác dụng như nhau, tuy nhiên với cách thứ 2 thì nó sẽ tường minh
// copy tất cả giá trị một LinkedHashMap này sang một LinkedHashMap khác
LinkedHashMap<String, Float> hangSo2= new LinkedHashMap<>();
hangSo2.putAll(hangSo);
// lấy một giá trị của LinkedHashMap ra để sử dụng
float pi = hangSo.get("pi");
}
Ở trên là một số cách thao tác với LinkedHashMap trong Java, tuy nhiên chúng ta có nhiều hàm, phương thức khác nữa, và tôi không thể giới thiệu hết.
Các bạn có thể tự tìm hiểu thêm.
Một số hàm của LinkedHashMap:
-
void clear()
: Xóa tất cả các phần tử của LinkedHashMap.
-
Object clone()
: Trả về một bản copy của LinkedHashMap.
-
boolean containsKey(Object key)
: Trả về true nếu LinkedHashMap chứa một phần tử có key được chỉ định.
-
boolean containsValue(Object value)
: Trả về true nếu LinkedHashMap chứa một phần tử có giá trị (value) được chỉ định.
-
Set entrySet()
: Trả về Collection view các ánh xạ có trong LinkedHashMap.
-
Object get(Object key)
: Trả về giá trị của key được chỉ định.
-
boolean isEmpty()
: Trả về true nếu LinkedHashMap trống.
-
Set keySet()
: Trả về một Set interface chứa tất cả các key của LinkedHashMap.
-
Object put(Object key, Object value)
: Thêm một cặp key-value vào LinkedHashMap.
-
void putAll(Map a)
: Sao chép các phần tử của Map được chỉ định vào LinkedHashMap.
-
Object remove(Object key)
: Xóa một phần tử có key được chỉ định ra khởi LinkedHashMap.
-
int size()
: Trả về số phần tử của LinkedHashMap.
-
Collection values()
: Trả về Collection của các giá trị có trong LinkedHashMap.
3. Kết luận
Như vậy là chúng ta đã cùng nhau tìm hiểu xong về LinkedHashMap trong Java, trong bài viết này chỉ giới thiệu một vài hàm, phương thức của lớp LinkedHashMap, tuy nhiên các bạn hoàn toàn có thể tự tìm hiểu thêm trên Java Documentation.
Không quá khó hiểu đúng không nào. Lập trình là như vậy, chỉ cần các bạn chịu học hỏi, mỗi ngày một chút thì các bạn sẽ giỏi dần lên.
“Đi đi, chậm cũng được, miễn là đừng dừng lại”.
> Nếu bạn đang nỗ lực học Java mà cảm thấy hơi khó khăn, hãy tham khảo ngay KHÓA HỌC JAVA tại NIIT - ICT Hà Nội để được hỗ trợ đầy đủ nhất.
---
HỌC VIỆN ĐÀO TẠO CNTT NIIT - ICT HÀ NỘI
Học Lập trình chất lượng cao (Since 2002). Học làm Lập trình viên. Hành động ngay!
Đc: Tầng 3, 25T2, N05, Nguyễn Thị Thập, Cầu Giấy, Hà Nội
SĐT: 02435574074 - 0914939543 - 0353655150
Email: hello@niithanoi.edu.vn
Fanpage: https://facebook.com/NIIT.ICT/
#niit #niithanoi #niiticthanoi #hoclaptrinh #khoahoclaptrinh #hoclaptrinhjava #hoclaptrinhphp #java #php #python