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:
Serve Static Resources with Spring
Rate Limiting in Spring Cloud Netflix Zuul
Java Program to Test Using DFS Whether a Directed Graph is Strongly Connected or Not
The DAO with JPA and Spring
Spring Cloud – Tracing Services with Zipkin
Java Program to Construct an Expression Tree for an Infix Expression
Weak References in Java
Java Program to Implement ConcurrentHashMap API
The Spring @Controller and @RestController Annotations
Converting a Stack Trace to a String in Java
Giới thiệu Java 8
Java Program to Permute All Letters of an Input String
Java Program to Search Number Using Divide and Conquer with the Aid of Fibonacci Numbers
Versioning a REST API
Using Spring @ResponseStatus to Set HTTP Status Code
The DAO with Spring and Hibernate
Xây dựng ứng dụng Client-Server với Socket trong Java
Custom Cascading in Spring Data MongoDB
Java Program to Find Transitive Closure of a Graph
Java Program to Implement the linear congruential generator for Pseudo Random Number Generation
Java Program to Find the Shortest Path from Source Vertex to All Other Vertices in Linear Time
Guide to the ConcurrentSkipListMap
Java Program to Implement Brent Cycle Algorithm
Mảng (Array) trong Java
Java 8 – Powerful Comparison with Lambdas
Spring Security with Maven
Java Program to Implement Horner Algorithm
Spring Security Registration – Resend Verification Email
Iterating over Enum Values in Java
Java Program to Implement the Bin Packing Algorithm
Java CyclicBarrier vs CountDownLatch
Java Program to Check Whether a Directed Graph Contains a Eulerian Path

