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

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

Trong bài này, chúng ta sẽ tìm hiểu về tập hợp Set trong lập trình Java là gì? Hướng dẫn cách thêm phần tử, duyệt qua các phần tử trong Set. Hay cách làm như thế nào đế xoá một hay tất cả các phần tử trong Set khi làm việc với ngôn ngữ lập trình hướng đối tượng Java. Á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 thêm tất cả các phần tử từ một tập hợp Set khác, kiểm tra kích thước của Set, Set có rỗng hay không. Cũng như cách để chuyển một tập hợp Set thành List hay kiểm tra một phần tử đã tồn tại trong Set chưa?

1. Tập hợp Set trong lập trình Java là gì

Tập hợp Set được sử dụng để lưu trữ các phần tử duy nhất không bị trùng lặp nhau trong tập hợp. Đây chính là điều khác biệt của Set so với các tập hợp khác. Các phần tử trong Set là duy nhất, chúng ta có thể thêm, xoá, sửa các phần tử trong Set.

  • Ví dụ tạo một Set như sau
1
2
3
4
5
6
7
8
9
10
11
12
13
import java.util.HashSet;

public class SetExample {

    public static void main(String[] args) {

        Set setA = new HashSet();

        setA.add(element);

        System.out.println( setA.contains(element) );
    }
}

Trong ví dụ trên ta tạo ra một tập hợp Set với implementation (lớp thực thi) là HashSet. Ngoài HashSet thì chúng ta có những lớp implementation của Set như sau

  • EnumSet
  • HashSet
  • LinkedHashSet
  • TreeSet

Mỗi một implementation của Set đều chứa đựng sự khác biệt về cách sử dụng và tốc độ sử lý các phần tử trong tập hợp. Tuỳ vào yêu cầu bài toán mà ta có thể chọn các loại tập hợp Set tương ứng. Chi tiết mỗi tập hợp sẽ được nói trong từng bài cụ thể sau.

  • Ví dụ tạo ra một Set như sau
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;

public class SetExample {

    public static void main(String[] args) {

        Set setA = new HashSet();
        Set setB = new LinkedHashSet();
        Set setC = new TreeSet();

    }
}

2. Thêm phần tử vào Set

  • Để thêm một phần tử vào Set ta sử dụng phương thức add như sau
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
import java.util.HashSet;
import java.util.LinkedHashSet;
import java.util.Set;
import java.util.TreeSet;

public class SetExample {

    public static void main(String[] args) {

       Set<String> setA = new HashSet<>();
      setA.add("element 1");
      setA.add("element 2");
      setA.add("element 3");

    }
}

3. Duyệt qua các phần tử trong Set

  • Sử dụng Iterator để duyệt qua các phần tử. Các em có thể xem chi tiết iterator hoạt động tại đây
1
2
3
4
5
6
7
8
9
10
11
Set<String> setA = new HashSet<>();

setA.add("element 1");
setA.add("element 2");
setA.add("element 3");

Iterator<String> iterator = set.iterator();

while(iterator.hasNext(){
  String element = iterator.next();
}
  • Sử dụng For Each để duyệt qua các phần tử
1
2
3
4
5
Set set = new HashSet();

for(Object object : set) {
    String element = (String) object;
}

4. Xoá một phần tử trong Set

  • Chúng ta sử dụng phương thức remove để xoá phần tử trong Set
1
set.remove("object-to-remove");

5. Xoá tất cả các phần tử trong Set

  • Để xoá tất cả các phần tử ta sử dụng phương thức clear
1
set.clear();

6. Thêm tất cả các phần tử từ một tập hợp Set khác

  • Set cung cấp cho chúng ta phương thức addAll để thêm các phần tử từ một tập hợp khác vào trong Set.
1
2
3
4
5
6
7
8
9
Set<String> set = new HashSet<>();
set.add("one");
set.add("two");
set.add("three");

Set<String> set2 = new HashSet<>();
set2.add("four");

set2.addAll(set)

7. Kiểm tra kích thước của Set

  • Chúng ta sử dụng phương thức size để xem có bao nhiêu phần tử trong Set
1
2
3
4
5
6
7
Set<String> set = new HashSet<>();

set.add("123");
set.add("456");
set.add("789");

int size = set.size();

8. Kiểm tra Set có rỗng không

  • Để kiểm tra Set có rỗng không ta sử dụng phương thức isEmpty
1
2
3
Set<String> set = new HashSet<>();

boolean isEmpty = set.isEmpty();

9. Kiểm tra một phần tử đã tồn tại trong Set chưa

Chúng ta sử dụng phương thức contains để kiểm tra xem phần tử đã tồn tại trong Set chưa

1
2
3
4
5
6
Set<String> set = new HashSet<>();

set.add("123");
set.add("456");

boolean contains123 = set.contains("123");

10. Chuyển tập hợp Set thành List

  • Chúng ta có thể cover một tập hợp Set thành List bằng phương thức addAll như sau
1
2
3
4
5
6
Set<String> set = new HashSet<>();
set.add("123");
set.add("456");

List<String> list = new ArrayList<>();
list.addAll(set);

Mọi người hãy subcribe kênh youtube dưới đây nhé. Videos về các kỹ năng mềm và lập trình sẽ được cập nhật hằng tuần


Comments