Java 集合框架LinkedHashSet
原文:https://www.studytonight.com/java/linkedhashset-in-collection-framework.php
Java LinkedHashSet 类是一个基于LinkedList
的 Set 接口实现。它用于存储独特的元素。它在内部使用HashMap
来存储元素。它实现了 Set 接口并扩展了 HashSet 类。该类的声明如下。
Java LinkedHashSet 类声明
public class LinkedHashSet<E>extends HashSet<E>implements Set<E>, Cloneable, Serializable
要点:
- LinkedHashSet 类扩展了 HashSet 类
- 它维护集合中条目的
LinkedList
。 - 它只包含独特的元素
- 它允许插入空值。
- 它按照元素插入的顺序存储元素,即保持插入顺序。
- Java LinkedHashSet 类是非同步的。
LinkedHashSet 构造器
LinkedHashSet 类有四个构造器,可以用来相应地创建 LinkedHashSet。
LinkedHashSet() // This creates an empty LinkedHashSet
LinkedHashSet( Collection C ) // This creates a LinkedHashSet that is initialized with the elements of the Collection C
LinkedHashSet( int capacity ) // This creates a LinkedHashSet that has the specified initial capacity
LinkedHashSet( int initialCapacity, float loadFactor )
LinkedHashSet 类示例
在这个例子中,我们创建了一个最初为空的 LinkedHashSet。稍后,我们将向该集合添加项目。
import java.util.*;
import java.util.*;
class Demo
{
public static void main(String args[])
{
// Creating LinkedHashSet
LinkedHashSet<String> hs = new LinkedHashSet<String>();
// Displaying LinkedHashSet
System.out.println(hs);
}
}
[]
LinkedHashSet 方法
它从 HashSet 类继承方法。所以我们可以用 LinkedHashSet 应用所有的 HashSet 操作。给定的表包含 HashSet 的方法。
| 方法 | 描述 | | 添加(英、法) | 如果指定的元素不存在,它会将该元素添加到该集合中。 | | 清除() | 它从集合中移除所有元素。 | | 克隆() | 它返回这个 LinkedHashSet 实例的一个浅拷贝:元素本身没有被克隆。 | | 包含(对象 o) | 如果该集合包含指定的元素,则返回 true。 | | isEmpty() | 如果该集合不包含任何元素,则返回 true。 | | 迭代器() | 它返回这个集合中元素的迭代器。 | | 移除(对象 o) | 如果存在指定的元素,它将从该集中移除该元素。 | | 大小() | 它返回集合中元素的数量。 | | 拆分器() | 它在集合中的元素上创建一个后期绑定和故障快速拆分器。 |
向链接的HashSet
中添加元素
在这个例子中,我们创建了一个存储整数值的 LinkedHashSet。由于 LinkedHashSet 不存储重复的元素,我们尝试添加一个重复的元素,但是输出只包含唯一的元素。
import java.util.*;
class Demo
{
public static void main(String args[])
{
// Creating LinkedHashSet
LinkedHashSet <integer>hs = new LinkedHashSet<>();
// Adding elements
hs.add(100);
hs.add(200);
hs.add(300);
hs.add(100);
// Displaying LinkedHashSet
System.out.println(hs);
}
}</integer>
[100, 200, 300]
从链接的HashSet
中删除元素
为了从 LinkedHashSet 中移除元素,我们使用了 remove()方法来移除指定的元素。
import java.util.*;
class Demo
{
public static void main(String args[])
{
// Creating LinkedHashSet
LinkedHashSet<Integer> hs = new LinkedHashSet<Integer>();
// Adding elements
hs.add(100);
hs.add(200);
hs.add(300);
hs.add(100);
// Displaying LinkedHashSet
System.out.println(hs);
// Removing elements
hs.remove(300);
System.out.println("After removing elements: \n"+hs);
}
}
[100,200,300]删除元素后:[100,200]
遍历LinkedList
的元素
由于 LinkedHashSet 是一个集合,所以我们可以使用循环来迭代它的元素。在这个例子中,我们使用 for 循环遍历元素。见下面的例子。
import java.util.*;
class Demo
{
public static void main(String args[])
{
// Creating LinkedHashSet
LinkedHashSet<Integer> hs = new LinkedHashSet<Integer>();
// Adding elements
hs.add(100);
hs.add(200);
hs.add(300);
hs.add(100);
// Traversing ArrayList
for(Integer element : hs) {
System.out.println(element);
}
}
}
100 200 300
获取LinkedHashSet
的大小
有时我们想知道 LinkedHashSet 包含的元素数量。在这种情况下,我们使用 size()然后返回 LinkedHashSet 的大小,它等于列表中存在的元素数量。
import java.util.*;
class Demo
{
public static void main(String args[])
{
// Creating LinkedHashSet
LinkedHashSet<Integer> hs = new LinkedHashSet<Integer>();
// Adding elements
hs.add(100);
hs.add(200);
hs.add(300);
hs.add(100);
// Traversing ArrayList
for(Integer element : hs) {
System.out.println(element);
}
System.out.println("Total elements : "+hs.size());
}
}
100 200 300 总要素:3