Java中的LinkedHashMap和LinkedHashSet的区别

LinkedHashMap

LinkedHashMap 就像 HashMap 一样,具有维护插入其中的元素顺序的附加功能。 HashMap 提供了快速插入、搜索和删除的优势,但它从未维护 LinkedHashMap 提供的插入轨道和插入顺序,其中元素可以按插入顺序访问。

示例:

// Java program to demonstrate // working of LinkedHashMap import java.util.*;  class LinkedHashMapExample {      public static void main(String args[])     {          // create an instance of LinkedHashMap         LinkedHashMap<Integer, String> lhm;         lhm = new LinkedHashMap<Integer, String>();          // insert element in LinkedHashMap         lhm.put(100, "Amit");          // insert first null key         lhm.put(null, "Ajay");         lhm.put(101, "Vijay");         lhm.put(102, "Rahul");          // insert second null key         // which replace first null key value         lhm.put(null, "Anuj");          // insert duplicate         // which replace first 102 key value         lhm.put(102, "Saurav");          // iterate and print the key/value pairs         lhm.entrySet().stream().forEach((m) -> {             System.out.println(m.getKey() + " "                             + m.getValue());         });     } } 

运行结果:

100 Amit null Anuj 101 Vijay 102 Saurav 

LinkedHashSet

LinkedHashSetHashSet 的有序版本,它在所有元素中维护一个双向链表。 当需要维护迭代顺序时,使用此类。 当遍历 HashSet 时,顺序是不可预测的,而 LinkedHashSet 按照元素插入的顺序遍历元素。 当使用迭代器循环通过 LinkedHashSet 时,元素将按照它们被插入的顺序返回。

示例:

// Java program to demonstrate // working of LinkedHashSet import java.util.*;  class LinkedHashSetExample {      public static void main(String args[])     {         // create an instance of LinkedHashSet         LinkedHashSet<String> lhs             = new LinkedHashSet<String>();          // insert element in LinkedHashMap         lhs.add("Amit");          // insert first null key         lhs.add(null);         lhs.add("Vijay");         lhs.add("Rahul");          // insert second null key         // which replace first null key value         lhs.add(null);         // insert duplicate         lhs.add("Vijay");          // create an iterator         // iterate and print the elements         Iterator<String> itr = lhs.iterator();         while (itr.hasNext()) {             System.out.println(itr.next());         }     } } 

运行结果:

Amit null Vijay Rahul 

LinkedHashMap 和 LinkedHashSet 的层次结构

Java中的LinkedHashMap和LinkedHashSet的区别

属性 LinkedHashMap 和 LinkedHashSet
顺序 LinkedHashMapLinkedHashSet 都维护插入顺序,元素按照添加它们的顺序进行排序。
同步 两者都不同步,必须在外部同步。
重复 LinkedHashMap 将键映射到值,因此它没有重复,而 LinkedHashSet 只是存储没有重复的事物的集合。
内存 LinkedHashmapLinkedHashset 中保持插入顺序会产生额外的相关成本,包括花费额外的 CPU 周期和需要更多内存。

LinkedHashMap 和 LinkedHashSet 的区别

属性 LinkedHashMap LinkedHashSet
声明 默认构造函数声明是:LinkedHashMap lhm = new LinkedHashMap(); 默认构造函数声明是:LinkedHashSet hs = new LinkedHashSet();
类声明 public class LinkedHashMap<K, V> extends HashMap<K, V> implements Map<K, V> public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, Serializable
构造函数 LinkedHashMap 接受五种类型的构造函数:LinkedHashMap(),LinkedHashMap(int initialCapacity),LinkedHashMap(int initialCapacity, float fillRatio),LinkedHashMap(int initialCapacity, float fillRatio, boolean Order),LinkedHashMap(Map<? extends K, ? extends V> m) LinkedHashSet 接受四种类型的构造函数:LinkedHashSet(),LinkedHashSet(Collection<? extends E> C),LinkedHashSet(int initialCapacity),LinkedHashSet(int initialCapacity, float fillRatio)
操作 LinkedHashMap 将键映射到值。 LinkedHashSet 只是存储了一个东西的集合。
替换 LinkedHashMap 用重复键替换值。 LinkedHashSet 不会改变原来的值。
Null 对象 LinkedHashMap 具有键值对中的元素,因此只有一个空键和多个空值。 LinkedHashSet 只是存储具有一个空值的事物的集合。

原创文章,作者:ItWorker,如若转载,请注明出处:https://blog.ytso.com/264233.html

(0)
上一篇 2022年6月7日
下一篇 2022年6月7日

相关推荐

发表回复

登录后才能评论