Table of Contents
1. Giới thiệu
Lớp LinkedHashSet trong Java kế thừa HashSet và triển khai Set Interface. Nó tạo một collection mà sử dụng một linked list để lưu giữ các phần tử theo thứ tự chúng đã được chèn.
Các điểm quan trọng về lớp LinkedHashSet trong java là:
- LinkedHashSet chỉ chứa các phần tử duy nhất, không chấp nhận 2 phần tử trùng nhau.
- LinkedHashSet đảm bảo thứ tự được thêm vào.
- LinkedHashSet sử dụng đối tượng LinkedHashMap nội bộ để lưu trữ và xử lý các phần tử của nó.
- LinkedHashSet cho phép chứa phần tử NULL.
- LinkedHashSet không được đồng bộ. Để có LinkedHashSet đồng bộ, hãy sử dụng phương thức Collections.synchronizedSet ().
2. Hierarchy của lớp TreeSet
Lớp java.util.LinkedHashSet được định nghĩa như sau:
public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, java.io.Serializable { private static final long serialVersionUID = -2851667679971038690L; public LinkedHashSet(int initialCapacity, float loadFactor) { super(initialCapacity, loadFactor, true); } }
public class HashSet<E> extends AbstractSet<E> implements Set<E>, Cloneable, java.io.Serializable { static final long serialVersionUID = -5024744406713321676L; private transient HashMap<E,Object> map; private static final Object PRESENT = new Object(); public HashSet() { map = new HashMap<>(); } }
3. Các phương thức khởi tạo (constructor) của lớp LinkedHashSet
- LinkedHashSet(): khởi tạo một danh sách mảng trống.
- LinkedHashSet(Collection c): khởi tạo một danh sách với các phần tử của collection c.
4. Các phương thức (method) của lớp LinkedHashSet
Xem thêm các phương thức của Set ở bài viết Set Interface trong java.
5. Ví dụ minh họa
5.1. Ví dụ sử dụng LinkedHashSet với kiểu dữ liệu cơ bản (Wrapper)
package com.maixuanviet.collection.linkedhashset; import java.util.LinkedHashSet; import java.util.Set; public class LinkedHashSetExample { public static final int NUM_OF_ELEMENT = 5; public static void main(String[] args) { // Create set Set<String> set = new LinkedHashSet<>(); set.add("Item01"); set.add("Item02"); set.add("Item03"); set.add("Item04"); set.add("Item05"); set.add("Item02"); set.add("Item03"); // Show set through for-each for (String item : set) { System.out.print(item + " "); } } }
Kết quả thực thi chương trình trên:
Item01 Item02 Item03 Item04 Item05
5.2. Ví dụ sử dụng LinkedHashSet với kiểu do người dùng tự định nghĩa (Object)
package com.maixuanviet.collection.linkedhashset; import java.util.LinkedHashSet; import java.util.Set; class Student { private int id; private String name; public Student(int id, String name) { this.id = id; this.name = name; } @Override public String toString() { return "Student [id=" + id + ", name=" + name + "]"; } } public class LinkedHashSetExample { public static final int NUM_OF_ELEMENT = 5; public static void main(String[] args) { // Create list Set<Student> students = new LinkedHashSet<>(); Student student1 = new Student(1, "myname1"); Student student2 = new Student(2, "myname2"); Student student3 = new Student(3, "myname3"); Student student4 = new Student(4, "myname4"); Student student5 = new Student(5, "myname5"); students.add(student1); students.add(student3); students.add(student2); students.add(student5); students.add(student4); students.add(student2); students.add(student3); // Show set student for (Student student : students) { System.out.println(student); } } }
Kết quả thực thi chương trình trên:
Student [id=1, name=myname1] Student [id=3, name=myname3] Student [id=2, name=myname2] Student [id=5, name=myname5] Student [id=4, name=myname4]
Related posts:
Kiểu dữ liệu Ngày Giờ (Date Time) trong java
How to Store Duplicate Keys in a Map in Java?
Prevent Cross-Site Scripting (XSS) in a Spring Application
Java Program to Use Dynamic Programming to Solve Approximate String Matching
Automatic Property Expansion with Spring Boot
Chuyển đổi giữa các kiểu dữ liệu trong Java
Java Program to Implement Hamiltonian Cycle Algorithm
Comparing getPath(), getAbsolutePath(), and getCanonicalPath() in Java
Java Program to Implement Interval Tree
Spring Boot - File Handling
Properties with Spring and Spring Boot
Java 14 Record Keyword
Get and Post Lists of Objects with RestTemplate
Spring Boot - Google Cloud Platform
Java Program to Check Whether a Weak Link i.e. Articulation Vertex Exists in a Graph
Spring Boot - Rest Controller Unit Test
Apache Commons Collections OrderedMap
Running Spring Boot Applications With Minikube
An Intro to Spring Cloud Contract
Java Program to Check if a Given Binary Tree is an AVL Tree or Not
Guide to the Volatile Keyword in Java
Hướng dẫn Java Design Pattern – Object Pool
Exploring the Spring Boot TestRestTemplate
Inject Parameters into JUnit Jupiter Unit Tests
Copy a List to Another List in Java
The Guide to RestTemplate
Spring Boot - Enabling HTTPS
Vector trong Java
Biến trong java
Java Program to Describe the Representation of Graph using Adjacency Matrix
Bootstrap a Web Application with Spring 5
Spring Data JPA and Null Parameters