Java LinkedHashSet 类

linkedhashset.png

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

标签: java, Java面试题, Java下载, java教程, java技术, Java学习, Java学习教程, Java语言, Java开发, Java入门教程, Java进阶教程, Java高级教程, Java笔试题, Java编程思想