首页 > 编程语言 >Java自学小白——Set系列集合、Map集合体系

Java自学小白——Set系列集合、Map集合体系

时间:2022-10-08 14:33:55浏览次数:57  
标签:Map Set 链表 索引 哈希 集合

   一、Set系列集合

Set系列集合特点

  • 无序:存取顺序不一致
  • 不重复:可以去除重复
  • 无索引:没有带索引的方法,所以不能使用普通for循环遍历,也不能通过索引来获取元素

Set集合实现类特点

  • HashSet:无序、不重复、无索引
  • LinkedHashSet:有序、不重复、无索引
  • TreeSet:排序、不重复、无索引

Set集合的功能基本上于Collection的API一致。

 

 

 1.HashSet底层原理

  • HashSet集合底层采取哈希表存储的数据。
  • 哈希表是一种对于增删改查数据性能都较好的结构。

2.哈希表的组成

  • JDK8之前,底层使用数组+链表组成
  • JDK8之后,底层采用数组+链表+红黑树组成

哈希值

  • 是JDK根据对象的地址,按照某种规则算出来的int类型的数值。

Object类的API

  • public int hashCode():返回对象的哈希值

对象的哈希值特点

  • 同一个对象多次调用hashCode()方法返回的哈希值是相同的
  • 默认情况下,不同对象的哈希值是不用的

哈希表的详细流程

 

 

 

 

 

 ps:只要往表中增加到12个元素,不管是占用一个位置还是链表连接,都会触发扩容机制

 LinkedHashSet

 

 

 

 

TreeSet

 

 

 

 

 

 

 

 

 

 

   二、Map系列集合

 

 

 Map的遍历方式

1.键找值

 

 

2.键值对

 

 

3.Lambda

Map集合的实现类HashMa

 

 

 

 

 

HashTable:初始大小为11,临界因子为0.75,扩容机制为自己看源码

 

 properties

总结

 

   三、Collections工具类

 

标签:Map,Set,链表,索引,哈希,集合
From: https://www.cnblogs.com/Ppotato33/p/16755891.html

相关文章

  • react setState设置深层级对象的属性
      要修改里面的内容 ......
  • vue2双向绑定原理:深入响应式原理defineProperty、watcher、get、set
    响应式是什么?Vue最独特的特性之一~就是我们在页面开发时,修改data值的时候,数据、视图页面需要变化的地方变化。主要使用到哪些方法?用 Object.defineProperty给watcher对......
  • manim|集合的运算
    目录​​前言​​​​集合与集合的运算​​​​预览效果​​​​代码​​前言都说数学是基础学科,集合论则是基础中的基础,今天我们之所以能这么简便的使用集合的概念,还得感谢......
  • memset,allocate,sizeof,strlen,strcpy,strcat
    #include<stdio.h>#include<stdlib.h>#include<string.h>intmain(){//typedefstructNode{//intdata;//structNode*p;//}Node,......
  • Python 使用zmail、imapclient或imap_tools接收邮件
    Python中,可以使用通过代码方式接收邮件,本文主要介绍使用zmail、imapclient和imap_tools三种方法接收邮件,以及相关的示例代码。原文地址:Python使用zmail、imapclient或ima......
  • 如何理解WeakMap?
    在学习​​缓存函数​​时,最后提到了WeakMap方式缓存(对入参类型为对象做缓存,并且当对象在WeakMap中的key没有引用时方便浏览器垃圾回收)Ifourparameterwereanobject(ra......
  • 关于 memset
    简要\(\texttt{memset}\)原用处是初始化\(\texttt{char}\)用的,故是按\(\texttt{1}\)个字节为单位初始的。但现在也用于数组。用法memset(数组名字,值,sizeof数组......
  • 为什么要用setTimeout模拟setInterval?
    setInterval的时间误差setInterval(fn,300);setInterval执行机制,300ms会检测一次任务队列中有无未执行的上一次任务fn,如果没有则将fn加入任务队列,如果有则跳过。由于......
  • 如何将String类的的ids转换成list集合
    publicintdeleteSchoolCalendarDetailByIds(Stringids){List<String>list=newArrayList<>();Stringstr[]=ids.split(",");list=Arrays.a......
  • 快速理解memset
    memset函数是在头文件:cstring 或 memory中 memset函数的作用是将数字以单个字节逐个拷贝的方式放到指定的内存中去memset(a,0,sizeofa);int类型的变量一般占......