5.LinkedHashSet

 

1.简介

  • LinkedHashSet 是 HashSet 的子类
  • LinkedHashSet 底层是一个 LinkedHashMap(是HashMap的子类),底层维护了一个 数组+双向链表 每一个节点都有 before after 属性
  • LinkedHashSet 有head tail
  • LinkedHashSet 根据元素的 HashCode 值来决定元素的存储位置,同时使用链表维护元素的次序,这使得元素看起来是以插入顺序保存的。(存入顺序与取出相同
  • LinkedHashSet 不允许添加重复元素
     

2.LinkedHashSet 的table数组

数组的类型是 HashMap$Node,存放的元素的类型是 LinkedHashMap$Entry 多态的表现

  • LinkedHashMap 中的静态内部类 Entry
static class Entry<K,V> extends HashMap.Node<K,V> {
    Entry<K,V> before, after;
    Entry(int hash, K key, V value, Node<K,V> next) {
        super(hash, key, value, next);
    }
}
  • HashMap中的静态内部类 Node
//实现的是Map接口中的Entry接口
static class Node<K,V> implements Map.Entry<K,V>

3.添加机制

  • 先求出hash值,找到对应table索引
  • 然后将添加的元素加入到双向链表【如果已经存在,则不添加[和HashSet一样]】
  • 注意维护双向链表
  • tail.next = new Element;//简单指定
    newElement.prev = tail;
    tail = newElement;
    
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 可以通过创建一个新的 ArrayList 对象,并将 LinkedHashSet 对象传递给其构造函数来将 LinkedHashSet 转换为 ArrayList。以下是示例代码: ```java LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>(); linkedHashSet.add("apple"); linkedHashSet.add("banana"); linkedHashSet.add("orange"); ArrayList<String> arrayList = new ArrayList<>(linkedHashSet); ``` 在上面的代码中,我们首先创建了一个 LinkedHashSet 对象,并向其中添加了几个字符串。然后,我们创建了一个新的 ArrayList 对象,并将 LinkedHashSet 对象作为参数传递给其构造函数。此操作将 LinkedHashSet 对象转换为 ArrayList 对象。现在,我们可以对 ArrayList 对象执行任何操作,就像操作任何其他 ArrayList 对象一样。 ### 回答2: 将LinkedHashSet转换为ArrayList可以通过以下步骤完成: 1. 创建一个LinkedHashSet对象。 2. 添加元素到LinkedHashSet中,确保元素的顺序是按照插入顺序排列的。 3. 创建一个ArrayList对象。 4. 使用ArrayList的构造函数,将LinkedHashSet对象作为参数,创建一个新的ArrayList对象。 5. 现在,ArrayList中的元素顺序应该与LinkedHashSet中的元素顺序相同。 示例代码如下所示: ```java import java.util.ArrayList; import java.util.LinkedHashSet; public class LinkedHashSetToArraylistExample { public static void main(String[] args) { // 创建LinkedHashSet对象 LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>(); // 向LinkedHashSet添加元素,确保元素的顺序是按照插入顺序排列的 linkedHashSet.add("Apple"); linkedHashSet.add("Banana"); linkedHashSet.add("Orange"); linkedHashSet.add("Grapes"); // 创建ArrayList对象,将LinkedHashSet对象作为参数 ArrayList<String> arrayList = new ArrayList<>(linkedHashSet); // 遍历ArrayList并打印元素 for (String element : arrayList) { System.out.println(element); } } } ``` 上述代码将LinkedHashSet中的元素按照插入的顺序转换为ArrayList,并打印出ArrayList中的元素。结果应该是:"Apple", "Banana", "Orange", "Grapes"。 ### 回答3: 要将LinkedHashSet转换为ArrayList,可以按照以下步骤进行: 1. 创建一个LinkedHashSet对象,命名为linkedHashSet。 2. 创建一个ArrayList对象,命名为arrayList。 3. 使用add()方法向linkedHashSet中添加元素。 4. 调用ArrayList的构造方法,将linkedHashSet作为参数传入,创建一个新的ArrayList对象。这一步可以使用ArrayList的构造方法,传入linkedHashSet作为参数进行转换。 5. 现在,我们已经成功地将LinkedHashSet转换为ArrayList。可以查看arrayList中的元素,使用get()方法遍历并打印出来。 以下是示例代码: ```java import java.util.ArrayList; import java.util.LinkedHashSet; public class Main { public static void main(String[] args) { LinkedHashSet<String> linkedHashSet = new LinkedHashSet<>(); linkedHashSet.add("Apple"); linkedHashSet.add("Banana"); linkedHashSet.add("Orange"); ArrayList<String> arrayList = new ArrayList<>(linkedHashSet); for (String element : arrayList) { System.out.println(element); } } } ``` 运行上述代码,输出结果为: ``` Apple Banana Orange ``` 这样,我们就成功地将LinkedHashSet转换为ArrayList,并且可以对该ArrayList进行进一步的操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值