Java集合的所有知识点详解,偏通俗易懂,集合笔记,Java开发者必看

ArrayList集合的部分方法展示

add()

这里要注意几点:

1、使用add添加的数字,是通过自动装箱的结果,集合内存储的是对象!

2、通过索引向指定位置添加索引,如果指定位置有其他元素,那么他会自动往后移;

3、如果指定索引超出了集合的原来的索引范围,比如在下面代码把4改成8,那么就会报错,索引越界

在这里插入图片描述

addAll()

addAll()可以让两个集合拼接在一起,没有指定索引,则会添加倒最后一位

如果指定了索引,则括号内的集合的元素从索引处依次添加,原集合的元素,会整体往后移;

在这里插入图片描述

遍历:

我们直接使用System.out.println(list);也可以将数组内的数据显示出来,但是它也仅仅是让llist中的集合暂时显示出来。

想要对里面的元素做一些操作,还是需要将他们从变量中遍历出来

可以使用for,增强for循环

在使用的时候,需要注意,遍历出的元素需要拆箱才可以;

关于foreach遍历时要用Object进行接收,因为这个属于单个元素进行遍历,遍历出来的时候还是一个集合对象 这点要注意下,也可以点击链接了解一下Object

Object的了解

在这里插入图片描述

Iterator迭代器

也可以使用Iterator迭代器进行集合的遍历;

前面再使用Iterator时,需要用Iterator修饰的变量来接受元素

在这里插入图片描述

关于集合的其他方法:

在这里插入图片描述在这里插入图片描述

| | |

| — | — |

理解ArrayList集合源码

ArrayList底层就是一个长度可以动态增长的Object数组,

我们可以通过源码的得知:

在这里插入图片描述

ArrayList他的初始容量为10,但是这里要清楚一个状况,我们只是单单创建了一个集合对象,并不代表这个对象有了初始值;

在这里插入图片描述

此时他的初始容量还是0;

当我们使用add添加元素之后,才会分配相应的你内存空间,初始容量为10;

但如果我们存储的容量大于10了,那么ArrayList集合就会扩容,

扩容增量:原容量的 0.5倍

如 ArrayList的容量为10,一次扩容后是容量为15,如果扩容了0.5倍后,还不能容纳一次传入的元素,那么就会扩容到可容纳元素的最小容量;

关于源码的理解,可以点击链接了解详情:

集合源码的理解

| | |

| — | — |

LinkedList的使用


add()

使用LinkedList集合时,他的元素添加方法与之前的ArrayList相同,

包括指定索引添加也是相同的语法

但同时需要注意的是如果在创建集合时定义了数据类型,那么就不能在集合内添加其他类型的数据了,否则就会报错

在这里插入图片描述在这里插入图片描述

remove()

使用remove()通过索引删除元素时要注意,删除某个元素之后,元素后面的其他元素就会向前移动,这个移动与我们的数组和ArrayList集合还有些不同;

数组和ArrayList底层还是属于一个数组结构,那么在进行元素的添加删除,还是通过元素的移动进行的

而LinkedList集合的底层属于双向链表,在进行删除的时候,需要修改节点,那么我们假设LinkedList集合内部有三个元素,每个元素都有两个节点,且每个节点相互指引;

第一个元素的节点前为空值,代表链表的开始,后面的节点指向第二个元素的前一个节点,同样第二个元素的前一个节点也指向第一个元素的后节点,依次类推,就可以通过双向链表把元素链接起来,这里需要注意的时,最后一个元素的后一个节点指向空,因为它后面就没元素了,关于这个双向链表可以点击以下链接了解:

点击了解双向链表

双向链表还是很重要的,最好找一些技术文档好好学习一下

isEmpty()

在这里插入图片描述

| | |

| — | — |

ArrayList集合和LinkedList集合的区别:


下面了解一下,ArrayList集合和LinkedList集合的一些区别:

将ArrayList替换成LinkedList之后,有什么变化?

  • 底层的结构变了

ArrayList:数组

LinkedList:双向链表

  • 具体的执行过程变化了

ArrayList:大量的后移元素

LinkedList:不需要大量的移动元素,修改节点的指向即可

将ArrayList替换成LinkedList之后,哪些没有发生变化?

  • 运算结果没有变

  • 执行的功能代码没有变

在实际开发过程中,到底是使用ArrayList还是LinkedList?

  • 根据使用场合而定

  • 大量的根据索引查询的操作,大量的遍历操作(按照索引0–n-1逐个查询一般),建议使用ArrayList

  • 如果存在较多的添加、删除操作,建议使用LinkedList

LinkedList增加了哪些新的方法?

  • 增加了对添加、删除、获取首尾元素的方法

  • addFirst()、addLast()、removeFirst()、removeLast()、getFirst()、getLast()

| | |

| — | — |

Java中栈和队列的实现类

============================================================================

在这里插入图片描述

很多人都听说过jvm中栈内存和堆内存,但今天的重点不再这,想要了解这方面的,可以点击以下链接进行了解:

点击了解栈堆

小编13年上海交大毕业,曾经在小公司待过,也去过华为、OPPO等大厂,18年进入阿里一直到现在。

深知大多数初中级Java工程师,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!

因此收集整理了一份《2024年最新Java开发全套学习资料》送给大家,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友,同时减轻大家的负担。
img
img
img

由于文件比较大,这里只是将部分目录截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频

如果你觉得这些内容对你有帮助,可以添加下面V无偿领取!(备注Java)
img

最后

经过日积月累, 以下是小编归纳整理的深入了解Java虚拟机文档,希望可以帮助大家过关斩将顺利通过面试。
由于整个文档比较全面,内容比较多,篇幅不允许,下面以截图方式展示 。







由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

mg-AHQq02rb-1711056209106)]
[外链图片转存中…(img-NW0GsNKB-1711056209107)]
[外链图片转存中…(img-1sRdzGKP-1711056209107)]
[外链图片转存中…(img-o4pl9B1k-1711056209107)]
[外链图片转存中…(img-nbks2HzC-1711056209108)]
[外链图片转存中…(img-Vgm8N6eZ-1711056209108)]

由于篇幅限制,文档的详解资料太全面,细节内容太多,所以只把部分知识点截图出来粗略的介绍,每个小节点里面都有更细化的内容!

本文已被CODING开源项目:【一线大厂Java面试题解析+核心总结学习笔记+最新讲解视频+实战项目源码】收录

  • 14
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值