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

要点:

  1. LinkedHashSet 类扩展了 HashSet 类
  2. 它维护集合中条目的LinkedList
  3. 它只包含独特的元素
  4. 它允许插入空值。
  5. 它按照元素插入的顺序存储元素,即保持插入顺序。
  6. 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