黑马程序员-第十五天( Set集合)

来源:互联网 发布:电脑像素画软件 编辑:程序博客网 时间:2024/05/15 23:49

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------

一,Set集合
set集合中的元素是无序(存入和取出的顺序不一定一致),元素是可以重复的。
set集合中的方法与collection的用法基本一样。

二,常见子类集合:
HashSet:底层数据结构是哈希表。线程是非同步的。保证元素唯一性的原理:判断元素的hashCode值是否相同,如果相同
还会继续判断元素的equals方法是否为true.
TreeSet:可以对set集合中的元素进行排序。底层数据结构是二叉树数据结构(当其中元素较多时,系统自动取折中值进行比较)
保证元素唯一性的依据是compareTo方法return 0;

注:排序时,当主要条件相同时,一定要判断次要条件。

三,HashSet是如何保证元素唯一性的呢(保证唯一性的依据)?
是通过元素的两个方法,hashCode()和equals(Object)来完成的,如果元素的hashCode值相同,才会判断
equals()是否为true.如果元素的hashCode值不同,不会调用equals()方法

注意:对于判断元素是否存在,以及删除等操作,依赖的方法是元素的hashCode和equals方法

四。TreeSet排序
第一种方式:让元素自身具备比较性,元素需要实现Comparable接口,覆盖compateTo方法,称为元素自然顺序,或默认顺序。
第二种方式:当元素自身不具备比较性时,或者具备的比较性不是所需要的,这时就需要让集合自身具备比较性。在
集合初始化时,就有了比较方式。定义了比较器,将比较器对象作为参数传递给TreeSet集合的构造函数

注:当两种比较方式都存在时,以比较器为主.可以使用匿名内部类来完成传递。

定义比较器?
定义一个类,实现Comparator接口,覆盖compare方法

判断TreeSet集合元素的唯一是根据compareTo和compate方法retrun 0

---------------------- ASP.Net+Unity开发、.Net培训、期待与您交流! ---------------------

0 0
原创粉丝点击