1.HashSet

Set的特点:无序、不重复、没有下标

list的特点:有序、可重复、有索引

此类实现 Set 接口,由哈希表(实际上是一个 HashMap 实例)支持。它不保证 set 的迭代顺序;特别是它不保证该顺序恒久不变。此类允许使用 null 元素。

此类为基本操作提供了稳定性能,这些基本操作包括 add、remove、contains 和 size,假定哈希函数将这些元素正确地分布在桶中。对此 set 进行迭代所需的时间与 HashSet 实例的大小(元素的数量)和底层 HashMap 实例(桶的数量)的“容量”的和成比例。因此,如果迭代性能很重要,则不要将初始容量设置得太高(或将加载因子设置得太低)。

注意,此实现不是同步的。如果多个线程同时访问一个哈希 set,而其中至少一个线程修改了该 set,那么它必须 保持外部同步。这通常是通过对自然封装该 set 的对象执行同步操作来完成的。如果不存在这样的对象,则应该使用 Collections.synchronizedSet 方法来“包装” set。最好在创建时完成这一操作,以防止对该 set 进行意外的不同步访问:

Set s = Collections.synchronizedSet(new HashSet(...));

此类的 iterator 方法返回的迭代器是快速失败 的:在创建迭代器之后,如果对 set 进行修改,除非通过迭代器自身的 remove 方法,否则在任何时间以任何方式对其进行修改,Iterator 都将抛出 ConcurrentModificationException。因此,面对并发的修改,迭代器很快就会完全失败,而不冒将来在某个不确定时间发生任意不确定行为的风险。

注意,迭代器的快速失败行为无法得到保证,因为一般来说,不可能对是否出现不同步并发修改做出任何硬性保证。快速失败迭代器在尽最大努力抛出ConcurrentModificationException。因此,为提高这类迭代器的正确性而编写一个依赖于此异常的程序是错误做法:迭代器的快速失败行为应该仅用于检测 bug。

2.构造方法

①HashSet()

构造一个新的空 set,其底层 HashMap 实例的默认初始容量是 16,加载因子是 0.75。

②HashSet(Collection<? extends E> c)

构造一个包含指定 collection 中的元素的新 set。

③HashSet(int initialCapacity)

构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和默认的加载因子(0.75)。

④HashSet(int initialCapacity, float loadFactor)

构造一个新的空 set,其底层 HashMap 实例具有指定的初始容量和指定的加载因子。

Android HashSet相关推荐

  1. Android学习路线

    Android学习路线 第一阶段:Java面向对象编程 1.Java基本数据类型与表达式,分支循环.  2.String和StringBuffer的使用.正则表达式.  3.面向对象的抽象,封装,继承 ...

  2. Android Handler 异步消息处理机制的妙用 创建强大的图片载入类

    转载请标明出处:http://blog.csdn.net/lmj623565791/article/details/38476887 ,本文出自[张鸿洋的博客] 近期创建了一个群.方便大家交流,群号: ...

  3. 性能优化之Java(Android)代码优化

    最新最准确内容建议直接访问原文:性能优化之Java(Android)代码优化 本文为Android性能优化的第三篇--Java(Android)代码优化.主要介绍Java代码中性能优化方式及网络优化, ...

  4. 自定义Android注解Part2:代码自动生成

    上一期我们已经把butterknife-annotations中的注解变量都已经定义好了,分别为BindView.OnClick与Keep. 如果你是第一次进入本系列文章,强烈推荐跳到文章末尾查看上篇 ...

  5. android笔试题整理

    笔试题整理 今天接到消息,说下个星期三.会陆陆续续的有公司来学校找暑假实习生.还没准备好啊,这就来啦?麻蛋 我慌的要死啊~ 1.Math.round(11.5)等于多少(). Math.round(- ...

  6. Android组件化专题 - 路由框架原理

    在路由框架之前,我们先了解什么是APT,并实践ButterKnife绑定findById的小功能.为什么先要讲解apt,因为路由的实现apt是核心的代码.看下面链接 APT 实践. 本文项目地址 为什 ...

  7. Android训练课程(Android Training) - 高效的显示图片

    高效的显示图片(Displaying BitmapsEfficiently) 了解如何使用通用的技术来处理和读取位图对象,让您的用户界面(UI)组件是可响应的,并避免超过你的应用程序内存限制的方式.如 ...

  8. java 扫描包框架_在Android中实现类似Spring的软件包扫描

    我正在尝试为component- scan我正在开发的Android框架实施类似于Spring的软件包扫描功能.基本上,我希望能够指定基本包,例如,com.foo.bar并检索Class具有特定批注的 ...

  9. Android 之窗口小部件详解--App Widget

    1 App Widget简介 App Widget是应用程序窗口小部件(Widget)是微型的应用程序视图,它可以被嵌入到其它应用程序中(比如桌面)并接收周期性的更新.你可以通过一个App Widge ...

最新文章

  1. PIE SDK点元素的绘制
  2. hdu 4679 树状dp
  3. iap java md5_苹果应用内支付(iOS IAP)的流程与常用攻击方式
  4. matlab中将ebn0转snr,EbNo(EbN0)和SNR
  5. 两款投屏和跨屏协作软件
  6. chrome浏览器提示“adobe flash player不是最新版本!”
  7. MP3 文件格式解析
  8. python简单速成,一行代码写爬虫
  9. intellij idea cpu占用率太大太满 运行速度太慢 使了五个解决方法最终成功
  10. android UI设计图片和文字尺寸px对应dp、sp值换算
  11. 人口会一直增长下去吗_地球上的人口一直暴增,会不会因此出现世界未日?
  12. spyder pyecharts不显示_微星PAG272QRZ显示器好不好用 微星PAG272QRZ显示器全面评测_显示器_硬件教程...
  13. android中edittext属性
  14. 怎样区分细菌性和病毒性感冒
  15. 190327-Matlab清除指定变量之外的所有变量
  16. html (第四本书第五章参考)
  17. gevent RecursionError
  18. 程序员表白,不光需要“技术”,更需要勇气!
  19. 卷积神经网络中的add和concat
  20. 实力认可丨立成电商获“天猫五星级运营服务商”荣誉称号

热门文章

  1. 关于api.weixin.qq.com 裁撤公告这件事
  2. 霸气的来了:从Jar包冲突搞到类加载机制!
  3. 《数据仓库与数据挖掘》期末复习总结(1)
  4. “萌系小家电”顶流的小熊电器,如何创造全域增长?
  5. Oracle读取log日志,oracle log LogMiner 日志分析
  6. 渡我不渡她用计算机怎么弹,抖音渡我不渡她手势舞分解 渡我不渡她手势舞教程...
  7. MultipartFile与File的互转
  8. JSP的Scriptlet实战
  9. 《Python编程快速上手—让繁琐工作自动化》第17章
  10. android微信头像无显示,canvas用arc画圆安卓显示问题,获取微信头像不显示问题...