Java教程-Java LinkedHashSet 类

Java LinkedHashSet 类
Java LinkedHashSet类是Set接口的Hashtable和链表实现。它继承自HashSet类并实现了Set接口。
Java LinkedHashSet类的重要点如下:
- Java LinkedHashSet类仅包含唯一的元素,就像HashSet一样。
- Java LinkedHashSet类提供所有可选的集合操作,并允许空元素。
- Java LinkedHashSet类是非同步的。
- Java LinkedHashSet类维护插入顺序。
注意:保持LinkedHashSet中的插入顺序会带来一些额外的成本,无论是额外的内存还是额外的CPU周期。因此,如果不需要保持插入顺序,请选择更轻量级的HashMap或HashSet。
LinkedHashSet类的层次结构
LinkedHashSet类扩展了HashSet类,HashSet类实现了Set接口。Set接口按层次顺序继承了Collection和Iterable接口。
LinkedHashSet类声明
让我们看一下java.util.LinkedHashSet类的声明。
public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, Serializable
Java LinkedHashSet类的构造函数
构造函数 | 描述 |
---|---|
HashSet() | 用于构造默认的HashSet。 |
HashSet(Collection c) | 用集合c的元素初始化HashSet。 |
LinkedHashSet(int capacity) | 将链式哈希集的容量初始化为给定的整数值容量。 |
LinkedHashSet(int capacity, float fillRatio) | 从参数初始化哈希集的容量和填充比率(也称为加载容量)。 |
Java LinkedHashSet示例
让我们看一个Java LinkedHashSet类的简单示例。在这里,您可以注意到元素按插入顺序迭代。
文件名: LinkedHashSet1.java
import java.util.*;
class LinkedHashSet1 {
public static void main(String args[]) {
// Creating LinkedHashSet and adding elements
LinkedHashSet<String> set = new LinkedHashSet();
set.add("One");
set.add("Two");
set.add("Three");
set.add("Four");
set.add("Five");
Iterator<String> i = set.iterator();
while (i.hasNext()) {
System.out.println(i.next());
}
}
}
输出:
One
Two
Three
Four
Five
注意:我们还可以使用增强的for循环来显示元素。
Java LinkedHashSet示例忽略重复元素
文件名: LinkedHashSet2.java
import java.util.*;
class LinkedHashSet2 {
public static void main(String args[]) {
LinkedHashSet<String> set = new LinkedHashSet<String>();
set.add("Ravi");
set.add("Vijay");
set.add("Ravi");
set.add("Ajay");
Iterator<String> itr = set.iterator();
while (itr.hasNext()) {
System.out.println(itr.next());
}
}
}
输出:
Ravi
Vijay
Ajay
使用LinkedHashSet类删除元素
文件名: LinkedHashSet3.java
import java.util.*;
public class LinkedHashSet3 {
public static void main(String argvs[]) {
// Creating an empty LinkedHashSet of string type
LinkedHashSet<String> lhs = new LinkedHashSet<String>();
// Adding elements to the set
lhs.add("Java");
lhs.add("T");
lhs.add("Point");
lhs.add("Good");
lhs.add("Website");
// Displaying all the elements in the set
System.out.println("The hash set is: " + lhs);
// Removing an element from the set
System.out.println(lhs.remove("Good"));
// After removing the element
System.out.println("After removing the element, the hash set is: " + lhs);
// Trying to remove an element that doesn't exist
System.out.println(lhs.remove("For"));
}
}
输出:
The hash set is: [Java, T, Point, Good, Website]
true
After removing the element, the hash set is: [Java, T, Point, Website]
false
Java LinkedHashSet示例:图书
文件名: Book.java
import java.util.*;
class Book {
int id;
String name, author, publisher;
int quantity;
public Book(int id, String name, String author, String publisher, int quantity) {
this.id = id;
this.name = name;
this.author = author;
this.publisher = publisher;
this.quantity = quantity;
}
}
public class LinkedHashSetExample {
public static void main(String[] args) {
LinkedHashSet<Book> hs = new LinkedHashSet<Book>();
// Creating Books
Book b1 = new Book(101, "Let us C", "Yashwant Kanetkar", "BPB", 8);
Book b2 = new Book(102, "Data Communications & Networking", "Forouzan", "Mc Graw Hill", 4);
Book b3 = new Book(103, "Operating System", "Galvin", "Wiley", 6);
// Adding Books to HashSet
hs.add(b1);
hs.add(b2);
hs.add(b3);
// Traversing HashSet
for (Book b : hs) {
System.out.println(b.id + " " + b.name + " " + b.author + " " + b.publisher + " " + b.quantity);
}
}
}
输出:
101 Let us C Yashwant Kanetkar BPB 8
102 Data Communications & Networking Forouzan Mc Graw Hill 4
103 Operating System Galvin Wiley 6