07/05/2018, 14:30

Lớp HashSet trong Java

kế thừa AbstractSet và triển khai Set Interface. Nó tạo một collection mà sử dụng một hash table để lưu giữ. Lưu ý trong hashset chỉ chứa các phần tử duy nhất, không chấp nhận 2 phần tử trùng nhau Một hash table lưu giữ thông tin bởi sử dụng một kỹ thuật được gọi là hashing. ...

kế thừa AbstractSet và triển khai Set Interface. Nó tạo một collection mà sử dụng một hash table để lưu giữ. Lưu ý trong hashset chỉ chứa các phần tử duy nhất, không chấp nhận 2 phần tử trùng nhau

Một hash table lưu giữ thông tin bởi sử dụng một kỹ thuật được gọi là hashing. Trong hashing, nội dung mang tính thông tin của một key được sử dụng để quyết định một value duy nhất, được gọi là hash code của nó.

Hash code sau đó được sử dụng như là index, tại đó dữ liệu mà liên kết với key được lưu giữ. Phép biến đổi của key vào trong hash code của nó được thực hiện tự động.

Để hiểu sâu hơn các khái niệm được trình bày trong chương này, mời bạn tham khảo loạt bài: .

Lớp HashSet trông Java hỗ trợ 4 constructor. Mẫu constructor đầu tiên xây dựng một hash set mặc định:

HashSet( )

Constructor tiếp theo khởi tạo hash code bởi sử dụng các phần tử trong c.

HashSet(Collection c)

Constructor tiếp theo khởi tạo dung lượng của hash set là capacity.

capacity tự động tăng khi phần tử được thêm vào Hash.

HashSet(int capacity)

Constructor tiếp theo khởi tạo cả dung lượng và fill ratio (cũng được gọi là dung lượng tải) của hash set từ các tham số của nó.

HashSet(int capacity, float fillRatio)

Tại đây, fill ratio phải nằm giữa 0.0 và 1.0, và nó quyết định độ full mà hash set có thể, trước khi nó được resize. Đặc biệt, khi số phần tử là lớn hơn dung lượng của hash set nhiều lần bởi fill ratio của nó, hash set này được mở rộng.

Ngoài các phương thức được kế thừa từ các lớp cha, lớp HashSet cũng định nghĩa các phương thức sau:

STT Phương thức và Miêu tả
1 boolean add(Object o)

Thêm phần tử đã cho tới Set này nếu nó đã không có mặt

2 void clear()

Gỡ bỏ tất cả phần tử từ Set này

3 Object clone()

Trả về một shallow copy của HashSet này: các đối tượng này chính chúng không bị mô phỏng

4 boolean contains(Object o)

Trả về true nếu Set này chứa phần tử đã cho

5 boolean isEmpty()

Trả về true nếu Set này không chứa phần tử nào

6 Iterator iterator()

Trả về một iterator qua các phần tử trong Set này

7 boolean remove(Object o)

Gỡ bỏ phần tử đã cho từ Set này nếu nó có mặt

8 int size()

Trả về số phần tử trong Set này

Ví dụ

Chương trình sau minh họa các phương thức được hỗ trợ bởi lớp HashSet trong Java:

import java.util.*;
public class HashSetDemo {

   public static void main(String args[]) {
      // tao mot hash set
      HashSet hs = new HashSet();
      // them cac phan tu toi hash set
      hs.add("B");
      hs.add("A");
      hs.add("D");
      hs.add("E");
      hs.add("C");
      hs.add("F");
      hs.add("F");
      //them gia tri F 2 lan nhung ket qua chi xuat hien 1 lan
      System.out.println(hs);
   }
}

Nó sẽ cho kết quả sau:

[D, E, F, A, B, C]

Mọi người cho thể tham gia khóa học thứ 6 của vietjackteam (đang tuyển sinh) vào đầu tháng 03/2018 do anh Nguyễn Thanh Tuyền, admin vietjack.com trực tiếp giảng dạy tại Hà Nội. Chi tiết nội dung khóa học tham khỏa link : .Các bạn học CNTT, điện tử viễn thông, đa phương tiện, điện-điện tử, toán tin có thể theo học khóa này. Số lượng các công việc Java hoặc .NET luôn gấp ít nhất 3 lần Android hoặc iOS trên thị trường tuyển dụng.

Các bạn ở xa học không có điều kiện thời gian có thể tham dự khóa Java online để chủ động cho việc học tập. Trong tháng 4/2018, VietJack khuyến mại giá SỐC chỉ còn 150k cho khóa học, liên hệ facebook admin fb.com/tuyen.vietjack để thanh toán chuyển khoản hoặc thẻ điện thoại, khóa học bằng Tiếng Việt với gần 100 video, các bạn có thể chủ động bất cứ lúc nào, và xem mãi mãi. Thông tin khóa học tại . Khóa học có rating 4.7/5 trên udemy từ nhận xét của các bạn học viên.

Mọi người có thể xem demo nội dung khóa học tại địa chỉ

Loạt bài hướng dẫn của chúng tôi dựa một phần trên nguồn tài liệu của: Tutorialspoint.com

Follow fanpage của team hoặc facebook cá nhân Nguyễn Thanh Tuyền để tiếp tục theo dõi các loạt bài mới nhất về Java,C,C++,Javascript,HTML,Python,Database,Mobile.... mới nhất của chúng tôi.

Bài học Java phổ biến tại vietjack.com:

collection_trong_java.jsp
0