Sử dụng SortedSet trong lập trình Java

Giới thiệu nội dung bài viết

Chủ đề hôm nay anh chọn để chia sẻ cho các bạn sẽ về SortedSet trong lập trình Java. Đây được xem là một trong những kiến thức lập trình Java căn bản mà bất cứ một lập trình viên Java nào cũng cần nắm vững. Trước hết chúng ta cần tìm hiểu SortedSet, tập hợp SortedSet là gì? Sau đó, cùng tìm hiểu các phương thức có trong SortedSet. Anh sẽ hướng dẫn các bạn cách thêm và xóa một phần tử khỏi SortedSet. Hay cách làm như thế nào để lấy phần tử đầu tiên hay cuối cùng trong SortedSet. Áp dụng được từ những chia sẻ trong bài viết để giải quyết các vấn đề khác bao gồm duyệt, sắp xếp các phần tử SortedSet. Cũng như cách để lấy các phần tử đầu và sau của SortedSet trong lập trình hướng đối tượng Java.

1. SortedSet trong lập trình Java là gì

SortedSet là một interface con của Set nó có đủ các chức năng mà Set có như giới thiệu ở bài trước. Ngoài ra có một cái đặt biệt đó là tất cả phần tử trong SortedSet là đều được sắp xếp theo một thứ tự, một trật tự nhất định là sắp xếp tăng dần hay giảm dần.

2. Tập hợp SortedSet

  • Tập hợp TreeSet là lớp thực thi implementation interface SortedSet. Chúng ta khai báo TreeSet như sau
1
  SortedSet sortedSet = new TreeSet();

3. Thêm một phần tử vào SortedSet

1
2
3
 SortedSet sortedSet = new TreeSet();

 sortedSet.add("one");

4. Xoá một phần tử ra khỏi SortedSet

1
sortedSet.remove("one");

5. Lấy phần tử đầu tiên SortedSet

1
Object firstElement = sortedSet.first();

6. Lấy phần tử cuối cùng SortedSet

1
Object lastElement = sortedSet.last();

7. Duyệt các phần tử SortedSet

1
2
3
4
5
6
7
8
9
10
11
SortedSet sortedSet = new TreeSet();

sortedSet.add("one");
sortedSet.add("two");
sortedSet.add("three");

Iterator iterator = sortedSet.iterator();
while(iterator.hasNext()) {
    String element = (String) iterator.next();
    System.out.println(element);
}

8. Sắp xếp các phần tử SortedSet

Mặc định tính năng sắp xếp các phần tử (Sort) là sort theo thứ tự tăng dần. Tuy nhiên chúng ta có thể tự viết ra một thuật toán so sánh khác bằng việc truyền vào một Comparator do chính chúng ta viết vào constructor của TreeSet như sau.

1
2
3
Comparator comparator = new MyComparator();

SortedSet sortedSet = new TreeSet(comparator);
  • Khi chúng ta duyệt qua các phần tử trong TreeSet mặc định nó sẽ duyệt từ nhỏ đến lớn. Chúng ta cũng có thể nói TreeSet duyệt ngược lại từ lớn đến nhỏ thông qua phương thức descendingIterator như sau
1
2
3
4
5
6
7
8
9
10
11
TreeSet treeSet = new TreeSet();

treeSet.add("one");
treeSet.add("two");
treeSet.add("three");

Iterator iterator = treeSet.descendingIterator();
while(iterator.hasNext()) {
    String element = (String) iterator.next();
    System.out.println(element);
}

9. Lấy các phần tử đầu SortedSet

  • SortedSet cung cấp cho chúng ta phương thức headSet() trả về một SortedSet mới với tất cả các phần tử nhỏ hơn phần tử truyền vào. Ví dụ anh có tập hợp là a,b,c,d,e. Khi anh truyền vào chữ c thì nó sẽ trả cho anh về một SortedSet mới là a và b vì a và b là nhỏ hơn giá trị c mà anh truyền vào.
1
2
3
4
5
6
7
8
9
SortedSet sortedSet = new TreeSet();

sortedSet.add("a");
sortedSet.add("b");
sortedSet.add("c");
sortedSet.add("d");
sortedSet.add("e");

SortedSet headSet = sortedSet.headSet("c");

10. Lấy các phần tử sau SortedSet

  • SortSet cung cấp phương thức tailSet trả về một SortedSet mới với tất cả các giá trị lớn hơn và bằng giá trị truyền vào . Cũng như ví dụ trên a có tập hợp là a,b,c,e,d. Khi anh truyền vào chữ c thì anh sẽ nhận được SortedSet mới là c,d,e
1
2
3
4
5
6
7
8
9
SortedSet sortedSet = new TreeSet();

sortedSet.add("a");
sortedSet.add("b");
sortedSet.add("c");
sortedSet.add("d");
sortedSet.add("e");

SortedSet tailSet = sortedSet.tailSet("c");

11. Video Demo

12. Source code

Sourcecode


Mọi người hãy Subscribe kênh youtube dưới đây nhé để cập nhật các video mới nhất về kỹ thuật và kỹ năng mềm

Các khoá học lập trình MIỄN PHÍ tại đây


Comments