Set学习
来源:互联网 发布:淘宝网平板电脑的架子 编辑:程序博客网 时间:2024/05/29 10:30
Set学习
1.定义说明
Set是一个不可以复制元素的数据结构。Set集合里面的元素都是唯一的,不可重复的。
2.关键方法说明
booleanadd(E object)
添加这个元素到集合中,如果集合中已经存在这个元素,那么集合将不添加这个元素。
3.常用子类说明
3.1子接口SortedSet
3.1.1定义说明
SortedSet是Set的子接口,它是实现有序遍历元素的初始接口。这排序既不是元素的自然排序,也不是像Comparator类的通过具体实现来排序的操作。在这个Set集合中的所有元素都是具有可比性,这里的排序一般是使用equals来进行比较。
3.1.2关键方法说明
Efirst()
返回集合中的第一个元素。
SortedSet<E>headset(E end)
返回end元素之前所有的元素组成的新SortedSet集合。
SortedSet<E>tailSet(E start)
把大于start或者等于start以上的元素组成新的SortedSet集合返回。
3.2实现类 AbstractSet
3.2.1 定义说明
AbstractSet是一个实现Set接口的抽象类,这个类并没有支持添加操作,这个类的子类都必须实现iterator()和size()方法。
3.2.2关键方法说明
booleanremoveAll(Collection<?> collection)
删除所有元素的方法。
3.3实现类CopyOnWriteArraySet
3.3.1定义说明
在Set中有一个内部CopyOnWriteArratSet实现其所有基本操作。另外,它还共享了以下几个特性:A:它是最适合在应用中更改集合大小,大家都知道,只读操作比其他操作有更多使用,并且还需要在应用中注意线程之间的干扰;B:这个集合是线程安全的;C:更改操作(add、set、remove)通常都需要复制整个基础数组;D:迭代器不支持remove操作;E:通过迭代器将很快遍历集合,但是不能遇到其他线程的干扰,迭代器的快速依靠基础数组当时建造的没有变化的快照。
3.3.2关键方法说明
booleanadd(E e)
如果集合中没有这个元素,那么将把这个元素添加到集合中,如果已经存在,将不添加。
BooleanretainAll(Collection<?> c)
把集合中,c包含的内容留存,其他删除。
3.4实现类HashSet
3.4.1 定义说明
HashSet是Set接口的一个实现,所有自选操作都支持,元素可以是所有类型。HashSet实际是以HashMap为实例。它不保证set集合中的元素迭代顺序,特别是它不保证顺序不会随着时间变化而变化,并且这个集合还允许null元素。
这个类肯定也包含一些基础操作,如增删改等,可以肯定的是哈希函数值正确的分布在这些buckets中。遍历集合所需要的时间跟HashSet实例的多少(元素的多少)或基础HashMap实例的多少成正比。另外一个很重要的是,初始容量不要太大,当然也不要太小,这对遍历的性能有很大的影响。
This is typically accomplished bysynchronizing on some object that naturally encapsulates the set.
还有一个需要注意的是,这个实现并没有线程同步,如果多线程同时访问集合,并且至少有一个线程在改变集合,那么它就需要在外部同步,这通常是通过对某些对象封装以达到集合同步,如果没有这样的对象存在,那么集合就需要使用Collections.synchronizedSet方法进行包裹,这最好是在创建完成时,允许没有同步的操作可以访问集合。
3.4.2关键方法说明
Booleanadd(E object)
允许添加不重复的元素。
3.5实现类LinkedHashSet
3.5.1定义说明
LinkedHashSet是HashSet的其中一个版本,它的元素也是保持双链路类型,迭代器的顺序就是元素的顺序。在这里,除了不支持null类型元素之外,其他所有Set的操作都支持。像HashSet一样,LinkedHashSet也没有线程安全,因此多线程访问的时候,还需要依靠外部机制来实现同步。
3.6实现类TreeSet
3.6.1定义说明
TreeSet是SortedSet的一个实现,所有基本操作都支持,元素可以是所有可供比较的对象。
3.6.2关键方法说明
Iterator<E>descendingIterator()
获取倒序的迭代器;
- Set学习
- 学习set
- 标准库学习--- SET
- C++ 学习 set itoa
- set和multiset 学习
- set命令的学习
- C++学习之set
- python学习-set
- redis系统学习-set
- 【C++学习】set
- C++ set学习初步
- STL学习之set
- set 类模板学习
- Redis学习--Set类型
- java学习之set
- Java学习·Set
- Python学习-map&set
- python set 学习笔记
- openCV 计算连通区域的形状描述符之距的概念和计算
- ubuntu下通过VMware安装windows 7
- 电驴提示“该内容尚未提供权利证明,无法提供下载”之解决办法详解
- 颜色的16进制代码表示
- view旋转动画
- Set学习
- 千山万水之Hibernate(四)——关联映射(多对一)
- Linux网络编程:原始套接字的魔力【上】
- 酷派手机如何用数据线连电脑
- slf4j+log4j2 maven
- 陈怡暖:2015.4.30晚间最强现货黄金白银操作建议
- 取当前时间的前几天、后几天
- webrtc native app 在 低带宽下的优化
- iOS开发——对象与字典互相转换