VietTuts

Tự Học Lập Trình Online

  • Home
  • Java
  • Servlet
  • JSP
  • Struts2
  • Hibernate
  • Spring
  • MyBatis
  • Java WS
  • C
  • C++
  • C#
  • Python
  • PHP
  • Excel
  • VBA
  • Web
    • JavaScript
    • JQUERY
    • JSON
    • AJAX
    • CSS
    • HTML
    • HTML5
    • Node.js
    • Angular 7
  • SQL
    • MySQL
    • SQL Server
  • Misc
    • Eclipse
    • Phần mềm tiện ích
    • Cấu trúc DL&GT
    • Selenium Test
Java cơ bản Các khái niệm Java OOPs

Java Collections

Collections là gì? List Interface trong java ArrayList trong java LinkedList trong java ArrayList vs LinkedList Set Interface trong java HashSet trong java HashSet trong Java hoạt động như thế nào? LinkedHashSet trong java TreeSet trong java Map Interface trong java HashMap trong java HashMap trong Java hoạt động như thế nào? LinkedHashMap trong java TreeMap trong java Hashtable trong java HashMap vs Hashtable EnumSet trong java EnumMap trong java Lớp Collections trong java Sorting trong Collections Comparable trong java Comparator trong java Comparable vs Comparator Lớp Properties trong java ArrayList vs Vector Array vs ArrayList Iterator trong Java
Java AWT Java Swing Java I/O Ví Dụ Java I/O Java JDBC Các tính năng mới trong java Lập Trình Mạng Với Java Các Tính Năng Mới Trong Java Bài Tập Java Có Lời Giải Câu hỏi phỏng vấn java
1 / 3
❮ ❯

Set trong Java


Sự khác nhau giữa ArrayList và LinkedList
HashSet trong java

Nội dung chính

  • Set interface trong java
  • Khai báo interface Set trong java
  • Các phương thức của interface Set trong java
  • Ví dụ về Set trong java
  • Khai báo Set trong Java
  • Thêm các phần tử vào Set trong Java
  • Thêm các phần tử một Collection khác vào Set trong Java
  • Duyệt các phần của một Set trong Java
    • Sử dụng bộ lặp Iterator
    • Sử dụng vòng lặp for-each
  • Xóa phần tử khỏi Set trong Java
  • Xóa tất cả các phần tử khỏi Set trong Java
  • Độ dài của Set trong Java
  • Kiểm tra Set trống trong Java
  • Chuyển đổi Set thành List trong Java

Set interface trong java

Set là một interface kế thừa Collection interface trong java. Set trong java là một Collection không thể chứa các phần tử trùng lặp.

Set được triển khai bởi Hashset, LinkedHashset, Treeset hoặc EnumSet.

  • HashSet lưu trữ các phần tử của nó trong bảng băm, là cách thực hiện tốt nhất, tuy nhiên nó không đảm bảo về thứ tự các phần tử được chèn vào.
  • TreeSet lưu trữ các phần tử của nó trong một cây, sắp xếp các phần tử của nó dựa trên các giá trị của chúng, về cơ bản là chậm hơn HashSet.
  • LinkedHashSet được triển khai dưới dạng bảng băm với có cấu trúc dữ liệu danh sách liên kết, sắp xếp các phần tử của nó dựa trên thứ tự chúng được chèn vào tập hợp (thứ tự chèn).
  • EnumSet là một cài đặt chuyên biệt để sử dụng với các kiểu enum.

Khai báo interface Set trong java


public interface Set<E> extends Collection<E>

Các phương thức của interface Set trong java

Method Description
boolean add(Object element) Nó được sử dụng để chèn các phần tử vào set.
boolean addAll(Collection c) Nó được sử dụng để chèn tất cả các phần tử của c vào set.
void clear() Xóa tất cả các phần tử khỏi set.
boolean contains(Object element) Trả về true nếu tập hợp này chứa phần tử đã chỉ định.
boolean containsAll(Collection c) Trả về true nếu set chứa tất cả các phần tử của collection c đã chỉ định.
boolean equals(Object o) So sánh các đối tượng được chỉ định với set.
boolean isEmpty() Trả về true nếu set không chứa phần tử.
int hashCode() Trả về giá trị mã băm
Iterator iterator() Trả về một trình vòng lặp iterator để duyệt qua các phần tử của set.
boolean remove(Object o) Xóa phần tử đã chỉ định khỏi set.
boolean removeAll(Collection c) Xóa khỏi set tất cả các phần tử của nó được chứa trong collection c đã chỉ định.
boolean retainAll(Collection c) Chỉ giữ lại các phần tử trong set được chứa trong collection c đã chỉ định.
int size() Trả về số lượng các phần tử của set.
Object[] toArray() Trả về một mảng chứa tất cả các phần tử trong set.
T[] toArray(T[] a) Trả về một mảng chứa tất cả các phần tử trong set, kiểu run-time của mảng trả về là kiểu đã chỉ định.

Ví dụ về Set trong java

Hãy xem ví dụ đơn giản về Set trong java sau, để cho bạn cảm nhận về cách Set hoạt động:


package vn.viettuts.set;

import java.util.HashSet;
import java.util.Set;

public class SetExam {
    public static void main(String[] args) {
        Set<String> setA = new HashSet<String>();
        setA.add("Java");
        setA.add("Python");
        setA.add("Java");
        setA.add("PHP");
        System.out.println("Số phần tử của setA: " + setA.size());
        System.out.println("Các phần tử của setA: " + setA);
        System.out.println("setA có chứa Java không? " + setA.contains("Java"));
        System.out.println("setA có chứa C++ không? " + setA.contains("C++"));
    }
}

Kết quả:

Số phần tử của setA: 3
Các phần tử của setA: [Java, PHP, Python]
setA có chứa Java không? true
setA có chứa C++ không? false

Khai báo Set trong Java

Vì Set là một (giao diện) interface, bạn cần khởi tạo một triển khai cụ thể của giao diện để sử dụng nó. Về cơ bản bạn có thể chọn các collection sau:

  • HashSet
  • LinkedHashSet
  • TreeSet
  • EnumSet

Ví dụ: khai báo Set trong Java:


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

Thêm các phần tử vào Set trong Java

Để thêm các phần tử cho một Set bạn gọi phương thức add(). Phương thức này được kế thừa từ Collection interface.


Set<String> setA = new HashSet<String>();
setA.add("Java");
setA.add("Python");
setA.add("Java");
setA.add("PHP");

Thêm các phần tử một Collection khác vào Set trong Java

Phương thức addAll(Collection c) được sử dụng để chèn tất cả các phần tử của c vào set, Ví dụ:


package vn.viettuts.set;

import java.util.HashSet;
import java.util.Set;

public class SetExam {
    public static void main(String[] args) {
        Set<String> setA = new HashSet<String>();
        Set<String> setB = new HashSet<String>();
        setB.add("Java");
        setB.add("Python");
        setB.add("Java");
        setB.add("PHP");
        // Thêm các phần tử setB khác vào setA trong Java
        setA.addAll(setB);
        
        System.out.println("Số phần tử của setA: " + setA.size());
        System.out.println("Các phần tử của setA: " + setA);
        System.out.println("setA có chứa Java không? " + setA.contains("Java"));
        System.out.println("setA có chứa C++ không? " + setA.contains("C++"));
    }
}

Kết quả:

Số phần tử của setA: 3
Các phần tử của setA: [Java, PHP, Python]
setA có chứa Java không? true
setA có chứa C++ không? false

Duyệt các phần của một Set trong Java

Có hai cách để duyệt các phần tử của Java Set.

  • Sử dụng bộ lặp Iterator
  • Sử dụng vòng lặp for-each

Sử dụng bộ lặp Iterator

Ví dụ duyệt Set với bộ lặp Iterator:


package vn.viettuts.set;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

public class DuyetSet1 {
    public static void main(String[] args) {
        Set<String> setA = new HashSet<String>();
        setA.add("Java");
        setA.add("Python");
        setA.add("Java");
        setA.add("PHP");
        System.out.println("Số phần tử của setA: " + setA.size());
        System.out.println("Các phần tử của setA: ");
        Iterator<String> iterator = setA.iterator();
        while (iterator.hasNext()) {
            System.out.println((String) iterator.next());
        }
    }
}

Kết quả:

Số phần tử của setA: 3
Các phần tử của setA: 
Java
PHP
Python

Sử dụng vòng lặp for-each

Ví dụ duyệt Set với vòng lặp for-each:


package vn.viettuts.set;

import java.util.HashSet;
import java.util.Set;

public class DuyetSet2 {
    public static void main(String[] args) {
        Set<String> setA = new HashSet<String>();
        setA.add("Java");
        setA.add("Python");
        setA.add("Java");
        setA.add("PHP");
        System.out.println("Số phần tử của setA: " + setA.size());
        System.out.println("Các phần tử của setA: ");
        for (String element : setA) {
            System.out.println(element);
        }
    }
}

Kết quả:

Số phần tử của setA: 3
Các phần tử của setA: 
Java
PHP
Python

Xóa phần tử khỏi Set trong Java

Bạn xóa các phần tử khỏi Set bằng cách gọi phương thức remove(Object o). Ví dụ:


package vn.viettuts.set;

import java.util.HashSet;
import java.util.Set;

public class XoaSetExam1 {
    public static void main(String[] args) {
        Set<String> setA = new HashSet<String>();
        setA.add("Java");
        setA.add("Python");
        setA.add("Java");
        setA.add("PHP");
        System.out.println("Các phần tử của setA trước khi xóa: ");
        for (String element : setA) {
            System.out.println(element);
        }
        // xóa phần tử PHP khỏi setA
        setA.remove("PHP");
        System.out.println("Các phần tử của setA sau khi xóa: ");
        for (String element : setA) {
            System.out.println(element);
        }
    }
}

Kết quả:

Các phần tử của setA trước khi xóa: 
Java
PHP
Python
Các phần tử của setA sau khi xóa: 
Java
Python

Xóa tất cả các phần tử khỏi Set trong Java

Bạn có thể xóa tất cả các phần tử khỏi Set bằng phương thức clear().


set.clear();

Độ dài của Set trong Java

Bạn có thể kiểm tra độ dài/kích thước của một set trong Java bằng cách sử dụng phương thức size().


package vn.viettuts.set;

import java.util.HashSet;
import java.util.Set;

public class SetExam {
    public static void main(String[] args) {
        Set<String> setA = new HashSet<String>();
        setA.add("Java");
        setA.add("Python");
        setA.add("Java");
        setA.add("PHP");
        System.out.println("Số phần tử của setA: " + setA.size());
    }
}

Kết quả:

Số phần tử của setA: 3

Kiểm tra Set trống trong Java

Bạn có thể kiểm tra độ dài/kích thước của một set trong Java bằng cách sử dụng phương thức isEmpty().


package vn.viettuts.set;

import java.util.HashSet;
import java.util.Set;

public class SetExam {
    public static void main(String[] args) {
        Set<String> setA = new HashSet<String>();
        setA.add("Java");
        setA.add("Python");
        setA.add("Java");
        setA.add("PHP");
        Set<String> setB = new HashSet<String>();
        System.out.println("setA có trống không? " + setA.isEmpty());
        System.out.println("setB có trống không? " + setB.isEmpty());
    }
}

Kết quả:

setA có trống không? false
setB có trống không? true

Chuyển đổi Set thành List trong Java

Bạn có thể chuyển đổi Set thành List trong Java bằng cách tạo List và gọi addAll() phương thức của nó, truyền tham số dưới dạng set cho phương thức addAll(). Ví dụ:


package vn.viettuts.set;

import java.util.ArrayList;
import java.util.HashSet;
import java.util.List;
import java.util.Set;

public class SetExam {
    public static void main(String[] args) {
        Set<String> setA = new HashSet<String>();
        setA.add("Java");
        setA.add("Python");
        setA.add("Java");
        setA.add("PHP");
        List<String> listA = new ArrayList<String>();
        // chuyển đổi setA thành listA
        listA.addAll(setA);
        System.out.println(listA);
    }
}

Kết quả:

[Java, PHP, Python]

Sự khác nhau giữa ArrayList và LinkedList
HashSet trong java

Bài viết liên quan:

  • Mảng (Array) trong java
  • ArrayList trong java
  • Sự khác nhau giữa Array với ArrayList
  • Sắp xếp các phần tử của List
  • Sự khác nhau giữa ArrayList và Vector
  • TreeSet trong java
  • HashSet trong java
  • HashMap trong java
  • Sự khác nhau giữa HashMap và Hashtable
  • List câu hỏi phỏng vấn Java Collection

Recent Updates

Xuất dữ liệu ra màn hình console trong JavaCài đặt môi trường JavaJava Swing - Bài tập quản lý sinh viên trong javaLinkedList trong javaArrayList trong javaBài tập java có lời giảiSử dụng Javascript trong HTMLToán tử dấu 2 chấm (::) trong Java 8Lambda Expression - Biểu thức Lambda trong java 8Collection trong C#Bài tập Java - Sắp xếp nhanh (Quick Sort) trong JavaBài tập Java - Sắp xếp chèn (Insertion Sort) trong JavaSắp Tết 2026 Rồi! - Còn bao nhiêu ngày nữa là đến tết 2026?

VietTuts on facebook

Học Lập Trình Online Miễn Phí - VietTuts.Vn
Danh Sách Bài Học

Học Java | Hibernate | Spring
Học Excel | Excel VBA
Học Servlet | JSP | Struts2
Học C | C++ | C#
Học Python
Học SQL

Bài Tập Có Lời Giải

Bài tập Java
Bài tập C
Bài tập C++
Bài tập C#
Bài tập Python
Ví dụ Excel VBA

Câu Hỏi Phỏng Vấn

201 câu hỏi phỏng vấn java
25 câu hỏi phỏng vấn servlet
75 câu hỏi phỏng vấn jsp
52 câu hỏi phỏng vấn Hibernate
70 câu hỏi phỏng vấn Spring
57 câu hỏi phỏng vấn SQL

Scroll back to top

Copyright © 2016 VietTuts.Vn all rights reserved. | Liên hệ | Chính sách - riêng tư | sitemap.html | sitemap_index.xml