peri hokiperihokiclarustologisticsrimashaop.compola taktis menang gates of olympus x1000 perihokipemain perihoki bongkar trik jepep starlight princess x1000perihoki beri panduan lengkap bermain mahjong ways 2 pgsofttips cara penghasil uang pgsoft mahjong ways 2 perihokimahjong wins 3 perihoki memberikan penggali terbesarfenomena gates of olympus buka peluang besar bagi duta76cara dapat pola emas rahasia di duta7 wild west goldtrik menang pgsoft mahjong ways 2 modal receh maxwin duta76duta76 main pgsoft mahjong ways 2 di sela istirahatscatter hitam mahjong wins 3 spin pasti jepe duta76perihoki spin mahjong ways 2 pgsoft scatter hitam maxwinsimbol mahjong wins 3 yang sering muncul di awal perihokitrik gampang menang mahjong winscuan mahjong wins 3 tanpa hentipola spin taruhan kecil mahjong winsstrategi kunci scatter hitam beruntungacor total mahjong wayskemenangan maksimal mahjong wayskemenangan pria pekanbaru mahjong waysmahjong wins3 fenomena baru sumatera baratmenangkan mahjong dengan lincahmenembus batas keberuntungan mahjong waysmenjajal keberuntungan di mahjong wayspola gratis mahjong ways1scatter hitam senjata rahasia mahjong winsteknik spinning menguntungkan untuk scatter hitamanalisis rtp tertinggi mahjong winsfenomena scatter hitam mahjong winsibu rumah tangga dan keberuntungan mahjongkeseruan main mahjong wins3menang mahjong pengguna baru di sosial mediamenghargai setiap momen di mahjong waysserunya main mahjong di warung internetspin slow motion mancing scatterstrategi jitu maxwin mahjong waysstrategi jitu menang mahjong modal kecil jackpot besaranak kampung papua menggemparkan mahjongkeajaiban scatter hitam mahjong wayskeberhasilan joni mahjong winskejaiban mahjong ways di ujung jalanketua mahjong wins3 kehadiran kemenangan dimulai dari balimahjong kehadiran yang menguntungkanmahjong menggila adat88panduan kilat raih 108 jutatips memenangkan mahjongbarista kopi menang 110 juta spin mahjongdakota76 scatter hitam mahjong wins 3gagal cpns menang mahjong wins 3 rp120 jutakisah karyawan minimarket dapat thr lebih awal mahjong winskisah pelajar sma kuasai mahjong wins 3 inspirasi sekolahkisah penjaga parkir tanah abang motor baru mahjong winskisah sukses ibu rumah tangga bandung mahjong winsmahasiswa kkn beli iphone15 mahjong wins3 dakotamantan anak band influencer mahjong scatter hitampola rtp senin gates of olympus guru matematikaidola scatter hitam gampang meledakidola sensasi jackpotidola pola scatter hitamidola hasilkan jackpot dalam waktu singkatidola mahjong wins 3 bocortukang cuci motor menemukan keberuntungan di mahjong

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 282

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_set_cookie_params(): Cannot change session cookie parameters when headers already sent

Filename: Session/Session.php

Line Number: 294

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 304

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 314

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 315

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 316

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 317

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: Session/Session.php

Line Number: 375

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: ini_set(): Headers already sent. You cannot change the session module's ini settings at this time

Filename: drivers/Session_files_driver.php

Line Number: 108

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_set_save_handler(): Cannot change save handler when headers already sent

Filename: Session/Session.php

Line Number: 110

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

A PHP Error was encountered

Severity: Warning

Message: session_start(): Cannot start session when headers already sent

Filename: Session/Session.php

Line Number: 143

Backtrace:

File: /home/blogchuabenh/domains/freetuts.net/public_html/site/controllers/Main_controller.php
Line: 10
Function: __construct

File: /home/blogchuabenh/domains/freetuts.net/public_html/sources/index.php
Line: 299
Function: require_once

File: /home/blogchuabenh/domains/freetuts.net/public_html/index.php
Line: 26
Function: require_once

SortedMap Interface trong Java - Freetuts
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.

test php

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.

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.

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.

Bài viết này được đăng tại [free tuts .net]

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:

Hướng dẫn Upload file với Spring Boot và jQuery Ajax trong Java

Hướng dẫn Upload file với Spring Boot và jQuery Ajax trong Java

Hướng dẫn download file với Spring Boot trong Java

Hướng dẫn download file với Spring Boot trong Java

Hướng dẫn Upload file với Spring Boot trong Java

Hướng dẫn Upload file với Spring Boot trong Java

Hướng dẫn CRUD với Spring Boot, REST và AngularJS trong Java

Hướng dẫn CRUD với Spring Boot, REST và AngularJS trong Java

Cách sử dụng Spring  Scheduled trong Spring Boot

Cách sử dụng Spring Scheduled trong Spring Boot

Cách dùng Groovy trong Spring Boot Java

Cách dùng Groovy trong Spring Boot Java

Cách dùng Spring Boot và Mustache trong Java

Cách dùng Spring Boot và Mustache trong Java

Cách dùng Spring Boot và MongoDB trong Java

Cách dùng Spring Boot và MongoDB trong Java

Cách tạo Restful Client bằng RestTemplate trong Spring Boot

Cách tạo Restful Client bằng RestTemplate trong Spring Boot

Hướng dẫn sử dụng Interceptor trong Spring Boot

Hướng dẫn sử dụng Interceptor trong Spring Boot

Sử dụng Twitter Bootstrap trong Spring Boot

Sử dụng Twitter Bootstrap trong Spring Boot

Tạo trang web đa ngôn ngữ với Spring Boot trong Java

Tạo trang web đa ngôn ngữ với Spring Boot trong Java

Tạo ứng dụng Chat với Spring Boot và Websocket

Tạo ứng dụng Chat với Spring Boot và Websocket

Sử dụng JUnit để tạo unit test trong Spring Boot

Sử dụng JUnit để tạo unit test trong Spring Boot

Cách triển khai Spring Boot trên Tomcat Server

Cách triển khai Spring Boot trên Tomcat Server

Cách test RESTful API trong Spring Boot

Cách test RESTful API trong Spring Boot

Cách dùng Spring Security trong Spring Boot để xác thực và phân quyền

Cách dùng Spring Security trong Spring Boot để xác thực và phân quyền

Duyệt cây nhị phân bằng phương pháp inOder trong Java

Duyệt cây nhị phân bằng phương pháp inOder trong Java

Xóa node của cây nhị phân tìm kiếm trong Java

Xóa node của cây nhị phân tìm kiếm trong Java

Bảo mật Spring Boot RESTful Service sử dụng Basic Authentication trong Java

Bảo mật Spring Boot RESTful Service sử dụng Basic Authentication trong Java

Top