www. On IT Road .com

LinkedHashSet 的构造函数

LinkedHashSet 有四种类型的构造函数:

  • LinkedHashSet():使用默认初始容量 (16) 和负载因子 (0.75) 初始化默认 LinkedHashSet 实例。
  • LinkedHashSet(int capacity):用指定的容量和负载因子 (0.75) 初始化 LinkedHashSet。
  • LinkedHashSet(int capacity, float loadFactor):用指定的初始容量和负载因子初始化LinkedHashSet。
  • LinkedHashSet(Collection c):用与指定集合相同的元素初始化一个LinkedHashSet。

LinkedHashSet 的方法

  • public boolean add(E e) :如果尚未存在,则将指定的元素添加到 Set 中。此方法在内部使用 equals() 方法来检查重复项。如果元素重复,则拒绝元素并且不替换值。
  • public void clear() :从 LinkedHashSet 中删除所有元素。
  • public boolean contains(Object o) :如果 LinkedHashSet 包含指定的元素,则返回 true,否则为 false
  • public boolean isEmpty() :如果 LinkedHashSet 不包含元素,则返回 true,否则返回 false
  • public int size() :返回 LinkedHashSet 中元素的数量。
  • public Iterator<E> iterator() :在此 LinkedHashSet 中的元素上返回一个迭代器。元素从迭代器返回,没有特定的顺序。
  • public boolean remove(Object o) :如果存在,则从 LinkedHashSet 中删除指定的元素并返回 true,否则返回 false
  • public boolean removeAll(Collection<?> c) :删除 LinkedHashSet 中属于指定集合的所有元素。
  • public Object clone() :返回 LinkedHashSet 的浅拷贝。
  • public Spliterator<E> spliterator() :在此 LinkedHashSet 中的元素上创建一个后期绑定和快速失败的 Spliterator。它具有以下初始化属性Spliterator.DISTINCTSpliterator.ORDERED

LinkedHashSet 特性

  • 它扩展了HashSet类,后者扩展了AbstractSet类。
  • 它实现了Set接口。
  • LinkedHashSet 中不允许出现重复值。
  • LinkedHashSet 中允许有一个 NULL 元素。
  • 它是一个有序集合,即元素插入到集合中的顺序(插入顺序)。
  • 与 HashSet 一样,此类为基本操作(添加、删除、包含和大小)提供恒定的时间性能。
  • LinkedHashSet 不同步。如果多个线程同时访问一个散列集,并且至少有一个线程修改了该集,则必须在外部进行同步。
  • 使用 Collections.synchronizedSet(new LinkedHashSet()) 方法获取同步的 LinkedHashSet。
  • 此类的迭代器方法返回的迭代器是快速失败的,如果在创建迭代器后的任何时间修改了集合,则可能会抛出“ConcurrentModificationException”,除非通过迭代器自己的“remove()”方法。
  • LinkedHashSet 还实现了 Searlizable 和 Cloneable 接口。

LinkedHashSet 层次结构

LinkedHashSet 类扩展了HashSet类并实现了Set接口。
Set 接口按层次顺序继承了 CollectionIterable接口。

public class LinkedHashSet<E> extends HashSet<E> 
				implements Set<E>, Cloneable, Serializable 
{
	//implementation
}
Java LinkedHashSet

Java LinkedHashSet 类扩展了 HashSet 并实现了 Set 接口。

LinkedHashSet 示例

LinkedHashSet 添加、删除、迭代器示例

//1. 创建 LinkedHashSet
LinkedHashSet<String> LinkedHashSet = new LinkedHashSet<>();
//2. 添加元素到 LinkedHashSet 
LinkedHashSet.add("A");
LinkedHashSet.add("B");
LinkedHashSet.add("C");
LinkedHashSet.add("D");
LinkedHashSet.add("E");
System.out.println(LinkedHashSet);
//3. 检查LinkedHashSet中是否包含某个元素
boolean found = LinkedHashSet.contains("A");        //true
System.out.println(found);
//4. 从LinkedHashSet中删除元素
LinkedHashSet.remove("D");
//5. 迭代值
Iterator<String> itr = LinkedHashSet.iterator();
while(itr.hasNext()) 
{
    String value = itr.next();

    System.out.println("Value: " + value);
}

输出:

[A, B, C, D, E]
true
Value: A
Value: B
Value: C
Value: E

将 LinkedHashSet 转换为数组示例

使用 toArrray() 方法将 LinkedHashSet 转换为数组的 Java 示例。

LinkedHashSet<String> LinkedHashSet = new LinkedHashSet<>();

LinkedHashSet.add("A");
LinkedHashSet.add("B");
LinkedHashSet.add("C");
LinkedHashSet.add("D");
LinkedHashSet.add("E");
String[] values = new String[LinkedHashSet.size()];
LinkedHashSet.toArray(values);
System.out.println(Arrays.toString(values));

输出:

[A, B, C, D, E]

Java 将 LinkedHashSet 转换为 ArrayList 示例

使用 Java 8 流 API 将 LinkedHashSet 转换为数组列表的 Java 示例。

LinkedHashSet<String> LinkedHashSet = new LinkedHashSet<>();

LinkedHashSet.add("A");
LinkedHashSet.add("B");
LinkedHashSet.add("C");
LinkedHashSet.add("D");
LinkedHashSet.add("E");
List<String> valuesList = LinkedHashSet.stream().collect(Collectors.toList());
System.out.println(valuesList);

输出:

[A, B, C, D, E]
日期:2020-09-17 00:09:47 来源:oir作者:oir