Set原理

set是一个不存在重复元素的集合。接口的底层实现有两个hashset和treeset。


HashSet

  • 一个没有重复元素的集合
  • 由HashMap实现不保证元素的顺序
  • 允许使用 null 元素
  • 非同步的
  • 迭代器是fail-fast的

数据结构

  • 它是通过HashMap实现的。HashSet中含有一个”HashMap类型的成员变量”map
  • 实际上的存值是将值存在map的key中,而value默认创建一个object代替
  • 构造函数支持传递“加载因子”和“初始容量”,当实际大小>最大容量*加载因子,容量将翻倍

遍历方式

  • 迭代器
  • for-each


TreeSet

  • 一个有序的且没有重复元素的集合
  • 继承于AbstractSet,所以它是一个Set集合,具有Set的属性和方法。
  • 实现了NavigableSet接口,意味着它支持一系列的导航方法。比返回小于、小于等于、大于等于、大于给定元素的元素
  • 实现了Cloneable接口
  • 实现了java.io.Serializable接口
  • 基于TreeMap实现的
  • 是非同步的
  • 它的iterator 方法返回的迭代器是fail-fast的

数据结构

  • 它是通过TreeMap实现的。TreeSet中含有一个”NavigableMap类型的成员变量”m
  • 实际上的存值是将值存在map的key中,而value默认创建一个object代替
  • 构造函数支持比较器传递,无参构造函数默认自然比较器,否则可传入自定义比较器

遍历方式

  • 迭代器
  • for-each



版权声明:本文为博主原创文章,欢迎转载,转载请注明作者、原文超链接,感谢各位看官!!!

本文出自:monkeyGeek

座右铭:生于忧患,死于安乐

欢迎志同道合的朋友一起交流、探讨!

monkeyGeek

评论

Your browser is out-of-date!

Update your browser to view this website correctly. Update my browser now

×