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()

获取倒序的迭代器;

 

 

0 0
原创粉丝点击