首页 > 其他分享 >2023-11-24

2023-11-24

时间:2023-11-24 21:56:44浏览次数:24  
标签:11 24 LinkedHashSet LinkedList ArrayList 链表 线程 2023 底层

2023-11-24

Vector底层结构和源码剖析、

基本介绍

1.Victor的定义说明

public class vector<E>
extends AbstractList<E>
implements LIst<E>,RandomAccess,Cloneble,Serializable

2.Victor底层也是个对象数组

3.Victor是线程同步的,即线程安全

4.开发中需要线程同步安全时,考虑使用Victor

Victor和ArrayList的比较

image

LinkedList底层结构

基本介绍

  1. LinkedList底层实现了双向链表和双端队列的特点
  2. 可以添加任何元素(包括null)
  3. 线程不安全,没有实现同步

LinkedList的底层操作机制

  1. LinkedList底层维护了一个双向链表
  2. LinkedList维护了两个属性first和last反别指向首节点和尾节点
  3. 每个节点,里面又维护了prev,next,item三个属性,其中prev指向前一个接节点,next指向后一个节点,最终实现双向链表
  4. 所以LinkedList的元素的添加和删除,不是通过数组完成,所以效率高

遍历方法

由于LinkedList是实现了List接口,遍历方法和List相同

  1. 迭代器
  2. 增强for
  3. 普通for

LinkedList和ArrayList的比较

image

如何选择ArrayList和LinkedList

  1. 改查操作多选择ArrayList
  2. 增删操作多选择LinkedList
  3. 一般来说,大部分情况都是选择ArrayList
  4. 要根据业务灵活选择
  5. 都是线程不安全的,建议单线程的情况下使用

Set接口和常用方法

基本介绍

  1. 无序(取出和添加顺序不同),没有索引
  2. 不允许重复元素

常用方法

Set接口是Collection的子接口,因此,常用方法和Collection接口一样

遍历方式

  1. 迭代器
  2. 增强for
  3. 不能使用索引的方式来获取

HashSet底层机制

HashSet底层是HashMap,HashMap底层是(数组+链表+红黑树)

HashSet添加元素时底层实现

image

HashSet的扩容和转换红黑树机制

image

LinkedHashSet全面介绍

  1. LinkedHashSet是HashSet的子类
  2. LinkedHashSet底层是了一个LinkedHashMap,底层维护的是一个数组+双向链表
  3. LinkedHashSet根据元素的HashCode值来决定元素的存储位置
  4. LinkedHashSet使用链表维护元素的次序,这使元素看起来是根据插入顺序保存的

image

标签:11,24,LinkedHashSet,LinkedList,ArrayList,链表,线程,2023,底层
From: https://www.cnblogs.com/lzyO-o/p/20231124-z194suf.html

相关文章

  • 11月24日
    在“虚拟聊天室”实例中增加一个新的具体聊天室类和一个新的具体会员类,要求如下:1.新的具体聊天室中发送的图片大小不得超过20M。2.新的具体聊天室中发送的文字长度不得超过100个字符。3.新的具体会员类可以发送图片信息和文本信息。4.新的具体会员类在发送文本信息时,可以......
  • 2023.11.24——每日总结
    学习所花时间(包括上课):9h代码量(行):0行博客量(篇):1篇今天,上午学习,下午学习;我了解到的知识点:1.JavaGUI2.会话跟踪技术明日计划:学习......
  • 20231124
    /*time:O(unknown)space:O(n*n)knowledge:树的直径step:dfs*2*/#include<bits/stdc++.h>usingnamespacestd;intn;vector<int>t[105];boolvis[105];ints,len;voiddfs(intx,intd){vis[x]=true;if(len<d){s=x;len......
  • 学习笔记11
    20211301学习笔记11教材知识点总结TCP/IP协议TCP:代表传输控制协议IP:代表互联网协议IPv4:32位IPv6:64位堆栈顶层:应用程序,用于登录远程主机ssh、用于交换电子邮件、用于web页面的http等应用程序需要可靠的数据传输网络中的数据流路径:IP主机和IP地址主......
  • [Luogu] P7911 [CSP-J 2021] 网络连接
    [CSP-J2021]网络连接-洛谷距离CSP2023还有\(**3**\)天题意及思路恶臭大模拟,按照题意模拟即可。有几个代码上的难点:当定义了一个scanf或者sscanf并且有一定的输入规则,那么如果读取到的字符串不符合定义的规则,那读入了几个变量就返回几个变量例如,如下代码定义了一个读......
  • [Luogu] P1164 小A点菜
    题目传送门一道动态规划,\(dp_{i, j}\)表示用前\(i\)个菜品花光\(j\)元的方法总数那么可以推出状态转移方程:\(if(j>a_i)\spacedp_{i,j}=dp_{i-1,j}+dp_{i-1,j-a_{i}}\)如果j比ai大,那么方案数就是不买\(dp_{i − 1, j}\)+买\(dp_{i − 1, j − a_i}\),其中如果买,那么......
  • [Luogu] P1114 “非常男女”计划
    https://www.luogu.com.cn/problem/P1114暴力,前缀和,稍加优化可以拿100,但是#1加强过后就AC不了了#include<bits/stdc++.h>usingnamespacestd;constintmaxn=2e6;inta[maxn],n,f[maxn],ans,boy;intmain(){ cin>>n; for(inti=1;i<=n;i++) { scanf("%d",a......
  • stm32学习随笔23.11.24
    探索TIM2两个PWM输出视频:B站BV1vb4y1T72LMain.C主函数部分节选#include"stm32f10x.h"                 //Deviceheader#include"Delay.h"#include"OLED.h"#include"TestLED.h"#include"PWM.h"#include"KEY.h"#incl......
  • 【刷题记录】20231124 线段树分治
    做题记录:注意到每次相当于\(0\)后面加\(1\),\(1\)后面加\(0\),因此每次可以合并01和10然后将问题规模减半。黑白染色,白格子=lcm+1,黑格子=prime相乘。发现横着竖着有六个质数,斜着只用四个质数。调整一下顺序即可。状压DP。考虑S作为前缀max时S与U-S的排列方案数。S每......
  • 2023-2024-1 20231320 《计算机基础与程序设计》第九周学习总结
    2023-2024-120231320《计算机基础与程序设计》第九周学习总结作业信息这个作业属于哪个课程<班级的链接>(2023-2024-1计算机基础与程序设计)这个作业要求在哪里<作业要求的链接>(2022-2023-1计算机基础与程序设计第九周作业)这个作业的目标<自学《计算机基础与......