TỔNG QUAN
CẤU TRÚC ĐIỀU KHIỂN
VÒNG LẶP
CHUỖI VÀ MẢNG
COLLECTIONS
THƯ VIỆN QUAN TRỌNG
HƯỚNG ĐỐI TƯỢNG
XỬ LÝ LUỒNG
EXCEPTION
LÀM VIỆC VỚI FILE
THAM KHẢO
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

SortedMap Interface trong Java

Trong bài này, tôi sẽ hướng dẫn đến các bạn một dạng riêng của Map Interface - đó là SortedMap Interface trong Java. Nội dung của bài này sẽ mô tả đặc điểm, các phương thức thường dùng của Collection này. Với mỗi phương thức được liệt kê, tôi sẽ đưa ra ví dụ đơn giản để cho các bạn nắm bắt được.

1. Đặc điểm

SortedMap Interface là 1 dạng riêng của Map Interface nên nó có những đặc điểm của Map đó là SortedMap cũng bao gồm một tập các cặp khóa - giá trị (key - value). Giá trị của các phần tử trong SortedMap có thể giống nhau, nhưng khóa thì không được giống nhau,  dựa vào khóa chúng ta có thể xác định được các giá trị value tương ứng với khóa đó. Ngoài ra, SortedMap có điểm vượt trội hơn so với Map là các entry có trong SortedMap được sắp xếp tăng dần theo khóa.

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

2. Các phương thức phổ biến

Vì SortedMap là 1 dạng riêng của Map nên những phương thức của nó sẽ tương tự như những phương thức có trong Map. Trong bài này, tôi sẽ không trình bày lại những phương thức đó mà tôi sẽ giới thiệu những phương thức riêng của SortedMap để cho các bạn tìm hiểu. 

Tạo mới và hiển thị các phần tử của 1 SortedMap

Để khai báo một SortedMap, chúng ta cần phải dùng đến Class để triển khai nó, trong phần này chúng ta sẽ sử dụng ClassTreeMap bởi vì các entry trong TreeMap được sắp xếp tăng dần theo khóa.

Ví dụ
public static void main(String[] args) {
	// khai báo SortedMap Interface tên sortedMapDomain
	// và sử dụng Class là TreeMap để triển khai
	// TreeMap là 1 Class Collection
	SortedMap<String, String> sortedMapDomain = new TreeMap<>();
		
	// thêm các entry vào trong sortedMapDomain
	sortedMapDomain.put(".com", "International");
	sortedMapDomain.put(".us", "United States");
	sortedMapDomain.put(".uk", "United Kingdom");
	sortedMapDomain.put(".jp", "Japan");
	sortedMapDomain.put(".au", "Australia");
	sortedMapDomain.put(".vn", "Việt Nam");
			
	System.out.println("Các entry có trong sortedMapDomain là: ");
	sortedMapDomain.forEach((keyChar, valueInt) -> System.out.println(
		"Key = " + keyChar + ", value = " + valueInt));
}

Sau khi biên dịch chương trình thì các entry có trong sortedMapDomain sẽ được sắp xếp theo chiều tăng dần của khóa. Kết quả như sau:

ketqua taomoiSortedMap PNG

Lưu ý: Để khai báo SortedMap chúng ta cần phải import gói thư viện java.util.SortedMap. Cú pháp import như sau:

Cú pháp
// Khai báo SortedMap
// thì import gói thư viện java.util.SortedMap
import java.util.SortedMap;
public class TênClass {
	// ...
}

Trích xuất một phần trong SortedMap

Đối với SortedMap, Java cung cấp cho chúng ta các phương thức để tạo 1 SortedMap con từ 1 SortedMap đã tồn tại đó là subMap(), headMap()tailMap(). Sau đây chúng ta sẽ cùng nhau tìm hiểu về 3 phương thức này.

Phương thức subMap().

Cú pháp
subMap(K fromKey, K toKey);

Công dụng: phương thức subMap() sẽ trả về một SortedMap con mà các giá trị key của nó có phạm vi từ fromKey đến toKey (không bao gồm toKey) của một SortedMap cho trước.

Ví dụ
public static void main(String[] args) {
	// khai báo SortedMap Interface tên sortedMapDomain
	// và sử dụng Class là TreeMap để triển khai
	// TreeMap là 1 Class Collection
	SortedMap<Integer, String> sortedMap = new TreeMap<>();
		
	// thêm các entry vào trong sortedMap
	sortedMap.put(4, "Wednesday");
	sortedMap.put(2, "Monday");
	sortedMap.put(3, "Tuesday");
	sortedMap.put(8, "Sunday");
	sortedMap.put(6, "Friday");
	sortedMap.put(5, "Thursday");
	sortedMap.put(7, "Saturday");
			
	// khai báo 1 SortedMap có tên là submap
	// có key nằm trong đoạn [3, 7) của sortedMap
	Map<Integer, String> submap = sortedMap.subMap(3, 8);
	System.out.println("Các entry có trong submap là: ");
	submap.forEach((keyChar, valueInt) -> System.out.println(
		"Key = " + keyChar + ", value = " + valueInt));
		
	// nếu key đầu và key cuối trùng nhau
	// thì kết quả của phương thức subMap() 
	// sẽ trả về submap không có entry nào
	submap = sortedMap.subMap(3, 3);
	System.out.println("Các entry có trong submap là: ");
	System.out.println(submap);
}

Kết quả sau khi biên dịch chương trình:

ketqua submapofMap PNG

Phương thức headMap().

Cú pháp
headMap(K toKey);

Công dụng: Phương thức headMap() sẽ trả về một SortedMap con mà các key của nó có giá trị nhỏ hơn toKey của một SortedMap cho trước.

Ví dụ
public static void main(String[] args) {
	SortedMap<Integer, String> sortedMap = new TreeMap<>();
		
	// thêm các entry vào trong sortedMap
	sortedMap.put(4, "Wednesday");
	sortedMap.put(2, "Monday");
	sortedMap.put(3, "Tuesday");
	sortedMap.put(8, "Sunday");
	sortedMap.put(6, "Friday");
	sortedMap.put(5, "Thursday");
	sortedMap.put(7, "Saturday");
			
	// khai báo 1 SortedMap có tên là headmap
	// có giá trị của key nhỏ hơn 5 trong sortedMap
	Map<Integer, String> headmap = sortedMap.headMap(5);
	System.out.println("Các entry có trong headmap là: ");
	headmap.forEach((keyChar, valueInt) -> System.out.println(
		"Key = " + keyChar + ", value = " + valueInt));
}

Kết quả sau khi biên dịch chương trình:

ketqua headmaptrongSortedMap PNG

Phương thức tailMap().

Cú pháp
tailMap(K fromKey);

Công dụng: Phương thức tailMap() sẽ trả về một SortedMap con mà các key của nó có giá trị lớn hơn hoặc bằng fromKey của một SortedMap cho trước.

Ví dụ
public static void main(String[] args) {
	SortedMap<Integer, String> sortedMap = new TreeMap<>();
		
	// thêm các entry vào trong sortedMap
	sortedMap.put(4, "Wednesday");
	sortedMap.put(2, "Monday");
	sortedMap.put(3, "Tuesday");
	sortedMap.put(8, "Sunday");
	sortedMap.put(6, "Friday");
	sortedMap.put(5, "Thursday");
	sortedMap.put(7, "Saturday");
			
	// khai báo 1 SortedMap có tên là tailmap
	// có giá trị của key lớn hơn hoặc bằng 6 trong sortedMap
	Map<Integer, String> tailmap = sortedMap.tailMap(6);
	System.out.println("Các entry có trong tailmap là: ");
	tailmap.forEach((keyChar, valueInt) -> System.out.println(
		"Key = " + keyChar + ", value = " + valueInt));
}

Kết quả sau khi biên dịch chương trình:

ketqua tailMapSortedMap PNG

Tìm giá trị khóa (key) nhỏ nhất và lớn nhất trong SortedMap

Để tìm giá trị khóa (key) nhỏ nhất (đầu tiên) và lớn nhất (cuối cùng) trong SortedMap, Java cung cấp cho chúng ta 2 phương thức đó là firstKey() (tìm giá trị nhỏ nhất) và lastKey() (tìm giá trị lớn nhất).

Ví dụ
public static void main(String[] args) {
	SortedMap<Double, Float> sortedMap = new TreeMap<>();
		
	// thêm các entry vào trong sortedMap
	sortedMap.put(0.2d, 0.1f);
	sortedMap.put(6.06d, 10.22f);
	sortedMap.put(1.2d, 9.8f);
	sortedMap.put(1d, 2f);
			
	// tìm giá trị khóa (key) nhỏ nhất và lớn nhất 
	// trong sortedMap
	// vì key trong SortedMap có kiểu dữ liệu là Double
	// nên 2 biến first và last cũng phải có kiểu là Double
	Double first = sortedMap.firstKey();
	Double last = sortedMap.lastKey();
		
	System.out.println("Key có giá trị nhỏ nhất và lớn nhất"
		+ " trong sortedMap là " + first + " và " + last);
}

Kết quả sau khi biên dịch chương trình:

ketqua firstKeylastKeySortedMap PNG

3. Lời kết

Trong bài này, tôi đã giới thiệu cho các bạn đặc điểm, các phương thức thường dùng đối với SortedMap Interface. Đây là loại Interface Collection cuối cùng. Sang bài sau tôi, chúng ta sẽ bước sang tìm hiểu về các loại Class Collection trong Java. Các bạn theo dõi nhé!

Cùng chuyên mục:

Khi nào dùng Default Methods trong Java 8

Khi nào dùng Default Methods trong Java 8

Ở 2 bài trước chúng ta đã tìm hiểu 2 tính năng mới của Java…

Cách chuyển chữ hoa thành chữ thường trong Java

Cách chuyển chữ hoa thành chữ thường trong Java

Trong bài viết này chúng ta sẽ tìm hiểu về cách chuyển đổi chữ in…

Bài tập tính tổng các số tự nhiên trong Java

Bài tập tính tổng các số tự nhiên trong Java

Các số dương 1, 2, 3, 4, ... được gọi là các số tự nhiên,…

Cách chuyển chữ thường thành chữ hoa trong Java

Cách chuyển chữ thường thành chữ hoa trong Java

Trong chuỗi có thể vừa có ký tự thường vừa có ký tự hoa, nhưng…

Cách viết hoa ký tự đầu tiên trong Java

Cách viết hoa ký tự đầu tiên trong Java

Để hiểu được bài này, các bạn cần có kiến thức căn bản về Java…

Hướng dẫn chuyển đổi giờ phút giây trong Java

Hướng dẫn chuyển đổi giờ phút giây trong Java

Để hiểu được chương trình, các bạn cần có kiến thức cơ bản về Java.…

Cách lấy thời gian hiện tại trong Java

Cách lấy thời gian hiện tại trong Java

Để hiểu được bài viết này, các bạn cần có kiến thức cơ bản sau…

Cách làm tròn số trong Java

Cách làm tròn số trong Java

Khi thực hiện tính toán, việc kết quả ra một con số thập phân dài…

Cách tìm ma trận chuyển vị trong Java

Cách tìm ma trận chuyển vị trong Java

Quá trình hoán đổi giữa hàng và cột được gọi là chuyển vị của ma…

Cách chuyển ArrayList thành mảng và ngược lại trong Java

Cách chuyển ArrayList thành mảng và ngược lại trong Java

Để hiểu được bài này, các bạn cần có kiến thức cơ bản về mảng…

Cách nối hai mảng trong Java

Cách nối hai mảng trong Java

Mình sẽ thực hiện hai chương trình nối mảng. Chương trình thứ nhất nối hai…

Cách xóa khoảng trắng của chuỗi trong Java

Cách xóa khoảng trắng của chuỗi trong Java

Mình sẽ thực hiện hai chương trình khác nhau để các bạn có thể hiểu…

In ra tam giác bằng ký tự * và số trong Java

In ra tam giác bằng ký tự * và số trong Java

Mình sẽ giới thiệu cách để in ra các tam giác bằng ký tự *…

Tìm số lớn nhất trong mảng Java

Tìm số lớn nhất trong mảng Java

Các bạn cần tìm hiểu về mảng, cách khởi tạo và in mảng trong Java…

Tìm ước của một số nguyên trong Java

Tìm ước của một số nguyên trong Java

Trong bài viết này chúng ta sẽ tìm hiểu cách tìm tất cả các ước…

Cách kiểm tra số hoàn hảo trong Java

Cách kiểm tra số hoàn hảo trong Java

Cách kiểm tra số đối xứng trong Java

Cách kiểm tra số đối xứng trong Java

Trong bài viết này chúng ta sẽ kiểm tra một số có phải là số…

Đảo ngược một số trong Java

Đảo ngược một số trong Java

Mình sẽ giới thiệu các bạn cách đảo ngược một số sử dụng vòng lặp…

Tìm bội chung nhỏ nhất trong Java

Tìm bội chung nhỏ nhất trong Java

Mình sẽ sử dụng hai cách khác nhau để tìm BCNN. Cách thứ nhất mình…

Cách hoán đổi hai số trong Java

Cách hoán đổi hai số trong Java

Trong phần này mình sẽ sử dụng một biến tạm temp() làm biến trung gian…

Top