首页 > 其他分享 >Set集合学习笔记

Set集合学习笔记

时间:2022-09-07 20:34:33浏览次数:69  
标签:Set 16 重复 元素 笔记 hashCode 集合

set集合

特性:

  1. 元素不可重复

  2. 元素无序

实现类:

  1. HashSet

  2. TreeSet

 

集合声明语法:

Set接口<泛型> 集合名称 = new Set接口的实现类<>();

 

HashSet集合

因为HashSet它的底层不是单纯的数组, 所以不具备下标特性, 我们就不能使用普通for循环来遍历集合,同时也不能单纯获取某个元素

数据结构: 哈希表结构 ( 数组 + 链表 )

 

因为Set集合的初始容量是16, 所以默认使用16索引的数组

元素存储的位置

  1. Hash值 % 16 的值 作为元素的存储的位置

  2. 如果要是存Hash值 % 16 的值 重复, 则判断元素的值是否相同, 如果相同则代表的是这两个数据重复. 如果hash值不同,那么即便两个元素的值相同 系统也会认为是两个不同的元素

  3. 若hash值相同, 比对元素值是否重复

 

HashCode和Equals

  • hashCode()和equals()方法的作用都是用来比较两个对象是否相等的

  • hashCode()方法是通过将对象内部地址(物理地址)转换成一个整数, 然后这个整数通过hash算法赶回一个 hasCode值. 再比较时通过比较hashCode值来判断对象是否相等

  • 如果hashCode的值相同,那么就开始使用equals()方法比对元素内容

  • 如果hashCode的值不相同, 则认为这两个元素不是同一个

 

LinkedHashSet集合

特性:

  1. 不可重复 (由数据结构中的哈希表来保证唯一)

  2. 元素有序 (由数据结构的链表保证元素有序)

 

TreeSet集合

特性:

  1. 不可重复

  2. 构造方法决定排序规则(自然排序(无参构造),比较器(构造中存在比较器))

 

compareTo() 比较方法

  • 如果返回0, 表示元素重复

  • 如果返回正数 则升序排序

  • 如果返回负数 则降序排序

 

Comparator 中的比较方法

compare(Student o1, Student o2)

  • 第一个参数在前, 第二个参数在后的时候, 升序

  • 第一个参数在后, 第二个参数在前的时候, 降序

Comparable 中 比较方法

  • 这个形参对象在前, 全局变量在后就是降序

  • 这个形参对象在后, 全局变量在前就是升序

标签:Set,16,重复,元素,笔记,hashCode,集合
From: https://www.cnblogs.com/y6909/p/16667169.html

相关文章

  • List集合学习笔记
    List集合语法:集合定义List<泛型>集合名称=new实现类<泛型>();泛型:集合中存储数据的数据类型: 如果存储基本数据类型的话,那么这里就得使用基本数据类型......
  • Map集合学习笔记
    规则:Map集合是一个双列集合,元素有键值对构成.(key-value)key值不可以重复的,value是可以重复的(因为Map中的key是存储到了set集合中)一个key只能对应一......
  • Wwise on macOS实战笔记
    前言众所周知,Wwise是一款功能极为强大的跨平台声音引擎。虽然引擎本身是跨平台的,但其设计工具(AuthoringTool)则是基于Winnows平台编写的。为了实现在Mac平台运行设计工具,......
  • JavaWeb学习笔记第三弹
    一、数据库设计1、软件研发步骤2、数据库设计概念建立数据库中的表结构以及表与表之间的关联关系的过程3、数据库设计的步骤表关系:一对一、一对多(多对一)、多对多......
  • 14.1 unittest初识 14.2 unittestdiscovery 14。3testsuite 14.4textloader 14.5disco
    14.1unittest初识importtimeimportrandomfromseleniumimportwebdriverfromselenium.webdriver.common.byimportByclassWX:def__init__(self):self......
  • 数据库学习笔记 (本数据库学习笔记以SQL sever 2019 为例进行学习) 20220906 第五节课
    通过一个表,抽象出表的关系模式:列是同质:即每一列中的分量来自同一域,是同一类型的数据列位置互换性:区分一列是靠列名行位置互换性:区分哪一行是靠某一或某几列的值(关键字......
  • 【笔记】拓扑排序(Ⅱ)
    题单0X00P7860[COCI2015-2016#2]ARTUR好题。首先考虑本题与拓扑排序有和关系。可以想到,某些棍子的先后移动顺序是有限制的。比如:这里红色的必须比蓝色的先移动,因为......
  • Python简洁语法笔记
    defaultdict需要构造类似{k1:{v11,v12,v13,...},k2:{v21,v22,v23,...},...}结构的数据时,可以用collections.defaultdict:fromcollectionsimportdefaultdict......
  • TP6框架--CRMEB学习笔记:项目初始化+环境配置
    这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助最近在研究一个基于TP6的框架CRMEB,这里分享下我的开发心得首先要获取原始项目文件这里是git地址https:......
  • mysql中find_in_set()函数的使用及in()用法详解
    这篇文章主要介绍了mysql中find_in_set()函数的使用以及in()用法详解,需要的朋友可以参考下 MySQL手册中find_in_set函数的语法解释:FIND_IN_SET(str,strlist)str要......