Collection体系的特点 分为 list 和set集合,这篇文章主要讲述Set,需要List请看上篇
简单认识单列集合collection集合的特点 :
list集合的特点: 有序 可重复 有索引
set集合的特点:无序 不重复 无索引 其中LinkedHashSet有序 TreeSet 按大小默认排序
▲List,set和Collection都是接口!!!
主要介绍HashSet,LinkedSet和TreeSet集合
一.HashSet
特点:无序 不重复 无索引
方法基本都是Collection接口提供的大致都是:
add()添加元素,
clear()清空集合,
isEmpty()判断集合是否为空
size()集合长度
contains()是否包含某个元素
remove()删除某个元素
toArry()把集合转成数组。
创建格式:Set<数据类型> set=new HashSet<>();
具体演示:
结果:
▲补充知识:哈希值----Java中每个对象都有对应的哈希值,对象可以通过调用Object类提供的hashecode()方法 返回该对象自己的哈希值。
public int hashecode() :返回对象的哈希值
注意:同一个对象多次调用hashecode()返回的哈希值都是一样 不同的对象 他们的哈希值一般不同 但也有可能相同(哈希碰撞)
如图有哈希碰撞:
以下是一个HashSet集合的例子:
运行结果:
二.LinkedSet
特点:有序 不重复 无索引
方法基本都是Collection接口提供的大致都是:add()添加元素, clear()清空集合, isEmpty()判断集合是否为空, size()集合长度, contains()是否包含某个元素, remove()删除某个元素, toArry()把集合转成数组。
以下为实例代码:
运行结果:▲LinkedList的有序是指插入的顺序,不是大小的顺序
三.TreeSet
特点:1.不重复 无索引 可排序(默认升序,按照元素的大小,由小到大排序)
2.底层基于红黑树实现排序
▲注意:
1.对数值类型:Integer Double 默认按数值大小的升序排序
2.对于字符串类型:默认按照首字符的编号升序排序
3.对于自定义类型如Student对象,TreeSet默认是无法直接排序的------使用之前的两个方法; 所以可以使用新的两种方法:
A:让自定类实现Comparable接口 重写里面的compaeeTo方法来指定比较规则
B:通过调用TreetSet集合有参构造器,可以设置Comparator对象(比较器对象,用于指定比较规则)public TreeSet(Comparator <? super E> comparator) -----例子的灰色体是注释
运行结果是:
以上就是关于Collection接口下Set接口的几个集合的大致描述,感谢各位大佬观看,求点赞收藏喔!!!