java Collection 之Set使用说明
Set
一个不包含重复元素的collection,确切的讲,set不包含满足e1.equals(e2)的元素对e1,e2,并且最多包含一个null元素;
此实现不是同步的,如果多个线程同时访问一个set,而其中至少一个线程修改了该set,那么它必须保持外部同步,通常是通过对自然封装该set的对象执行同步操作来完成,如果不存在这样的对象,则:Collections.synchronizedSet();
HashSet
集合中元素无顺序,不重复;数据结构是哈希表;
保证元素唯一性的原理:判断元素的HashCode值是否相同,若相同,还会继续判断元素的equals方法,是否为true; 当一个对象被存储进HashSet集合中后,就不能修改这个对象的那些参与计算哈希值的字段了,如果修改后就会造成内在泄漏;
TreeSet
可以对Set集合中的元素进行排序:
(1)让元素自身具备比较性,元素需要实现Comparable接口,覆盖compareTo方法,这种方式也成为元素的自然顺序;
(2)元素自身不具备比较性,或者具备的比较性不是所需要的,这时就需要让集合自身具备比较性。在集合初始化时就有了比较方式[定义比较器(Comparator<>接口),将它作为参数传给集合的构造函数]
以下两种方式为TreeSet需要实现的两种接口
class Obj implements Comparable<Obj> {
public int compareTo(Obj o) {
return this.name.compareTo(o.name);
} }
class Comptor implements Comparator<ComptorObj> {
@Override
public int compare(ComptorObj o1, ComptorObj o2) {
return o1.name.compareTo(o2.name);
} }
您可能感兴趣的文章:
- Java类集框架——Set接口和子接口SortedSet以及SortedSet接口的子类TreeSet之间的联系和使用、排序设置重复元素的说明
- java中List、Map、Set、Collection、Stack、Queue等的使用
- Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与LinkedHashSet类))
- Java学习之容器上(Collection接口常用方法,Iterator接口,使用foreach循环遍历Collection集合元素,Set集合通用知识(Hashset类,hashcode()与Lin
- Java中JFrame的getContentPane()和setContentPane()方法使用说明
- Java集合Collection、List、Set、Map使用详解
- java使用反射调用set和get方法
- [java]反射机制给属性使用set方法构造对象
- jni使用基础(八)之jni使用流程及C调用java简单说明
- Java IO流类继承关系及使用说明
- JAVA Collection - Set和Map的关系
- Java核心API -- 6(Collection集合List、Set、ArrayList、HashSet)
- Java中集合List,Map,Set的使用
- Python多线程中join函数与setDaemon函数使用说明
- Java核心数据结构(List,Map,Set)使用技巧与优化
- 【java随记】——Collection集合之六大接口(Collection、Set、List、Map、Iterator和Comparable)
- Java中transient的使用说明
- log4j日志管理系统简单使用说明 - open java project(转载)
- Java高级之集合与泛型>Collection、Set、HashSet、LinkedHashSet、TreeSet
- Java-Collection、List、Set