寒假14:Set集合

Set集合特点:
不包含重复元素的集合
没有带索引的方法,所以不能使用普通for循环遍历
HashSet:对集合的迭代顺序不作任何保证

Set<String> set = new HashSet<String>();
set.add("hello");
set.add("world");
set.add("world");

for(String s : set) {
  System.out.println(s);
}
  
输出: world hello

哈希值
哈希值是JDK根据对象的地址或者字符串或者数字算出来的int类型的数值

Object类中的 hashCode()
public int hashCode(): 返回对象的哈希码值

同一个对象多次调用hashCode()方法返回的哈希值是相同的


例子.png

HashSet集合概述和特点:
底层数据结构是哈希表
对集合的迭代顺序不做任何保证
没有带索引的方法,不能对普通for循环遍历
由于是set集合,所以不包含重复元素的集合

HashSet集合保证元素唯一性源码分析.png

哈希表默认初始长度为16,负载为0.75


哈希表存储流程.png

LinkedHashSet集合概述和特点
哈希表和链表实现的Set接口,具有可预测的迭代次序
由链表保证元素有序,也就是说元素的存储和去除顺序是一致的
由哈希表保证元素唯一,也就是说没有重复的元素

TreeSet集合概述和特点


TreeSet集合概述和特点 .png

自然排序Comparable的使用


1.png
2.png
3.png
4.png

return 1 正序
return -1 倒序
return 0 返回第一个元素

Comparator的使用


Comparator的使用.png
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容