java集合框架(十):LinkedHashSet
2017-12-11 00:00
316 查看
上一遍博文介绍了HashSet的原理,而现在将要讲解的LinkedHashSet是HashSet的子类,相信理解起来也是比较容易的。LinkedHashSet与父类HashSet最大区别就是其存储的值是在LinkdeHashMap(点击此处了解原理)的key中,而不是HashMap的key中。
从以上代码可以看出,LinkedHashSet的类定义没什么特别之处,主要的方法和属性都是继承于父类HashSet
LinkedHashSet的使用场合是要求集合不能有重复元素,且元素具有先进先出(FIFO)的特性。
由于LinkedHashSet的值存储在LinkedHashMap的key中,故自定义类需要重写超类的equals()和hashCode()方法。
一、类的定义
public class LinkedHashSet<E> extends HashSet<E> implements Set<E>, Cloneable, java.io.Serializable {}
从以上代码可以看出,LinkedHashSet的类定义没什么特别之处,主要的方法和属性都是继承于父类HashSet
二、构造函数
// 指定初始容量和负载因子 public LinkedHashSet(int initialCapacity, float loadFactor) { // 调用父类的构造器,父类属性map赋值为LinkedHashMap(请参考上一遍博文) super(initialCapacity, loadFactor, true); } // 指定初始容量 public LinkedHashSet(int initialCapacity) { super(initialCapacity, .75f, true); } // 默认构造器 public LinkedHashSet() { super(16, .75f, true); }
三、总结
LinkedHashSet继承于HashSet,其数据结构是LinkedHashMap。LinkedHashSet的使用场合是要求集合不能有重复元素,且元素具有先进先出(FIFO)的特性。
由于LinkedHashSet的值存储在LinkedHashMap的key中,故自定义类需要重写超类的equals()和hashCode()方法。
相关文章推荐
- java 源码分析之HashSet及LinkedHashSet
- HashSet TreeSet LinkedHashSet 区别
- Java散列集Set 树集TreeSet HashSet LinkedHashSet SortedSet NavigableSet
- Java Collections Framework之HashSet及LinkedHashSet源码分析(基于JDK1.6)
- (Leetcode)46&47 Permutations--LinkedList and HashSet
- 《Java源码分析》:LinkedHashSet
- Collect Set List HashSet ArrayList LinkedList TreeSet Map HashMap TreeMap
- 集合框架源码分析五之LinkedHashMap,LinkedHashSet
- LinkedHashMap和LinkedHashSet
- LinkedHashMap & LinkedHashSet
- java源码分析之HashSet和LinkedHashSet
- JAVA LinkedHashSet 和 LinkedHashMap源码剖析
- hashSet linkedHashSet treeSet 一点区别
- java源码分析之HashSet及LinkedHashSet
- Java基础 集合框架 共性方法 迭代器 ArrayList LinkedList Vector HashSet TreeSet
- Java-Collection源码分析(十二)——Set、AbstractSet、HashSet和LinkedHashSet
- Java源码初学_HashSet&LinkedHashSet
- JAVA提高教程(3)-认识Set集合之LinkedHashSet
- HashSet vs. TreeSet vs. LinkedHashSet
- 《Java源码解析》集合框架Set之LinkedHashSet