位置: IT常识 - 正文

深度解析ArrayList使用(深度解析冯德伦最后为什么选了舒淇)

编辑:rootadmin
深度解析ArrayList使用

推荐整理分享深度解析ArrayList使用(深度解析冯德伦最后为什么选了舒淇),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:深度解析张艺谋《坚如磐石》,深度解析你也是个rapper,深度解析天蝎女爱情观,深度解析你也是个rapper,深度解析天蝎女,深度解析何以笙箫默,深度解析何以笙箫默,深度解析天蝎女爱情观,内容如对您有帮助,希望把文章链接给更多的朋友!

文章目录一、ArrayList是什么?二、ArrayList的构造方法三、ArrayList的常见方法常见方法遍历ArrayList使用迭代器删除元素四、ArrayList的扩容机制一、ArrayList是什么?

ArrayList 类是一个可以动态修改的数组,与普通数组的区别就是它是没有固定大小的限制,我们可以添加或删除元素。ArrayList 继承了 AbstractList ,并实现了 List 接口。

我们发现ArrayList类位于java.util包中,使用之前需要去引入它.

import java.util.ArrayList;

ArrayList如何定义:

ArrayList<E> arrayList = new ArrayList<E>();

此数E为泛型实参类型,只能为引用数据类型,ArrayList想存储什么类型的数据,我们就传什么就可以。

List<E> list = new ArrayList<E>();

因我们的ArrayList是继承于List的,所以我们可以用父类去接受子类对象,向上转型。

二、ArrayList的构造方法

我们发现ArrayList一共提供了三种构造方法。 构造方法1: 构造一个空的顺序表

List<Integer> list = new ArrayList<>();

构造方法2: 构造一个指定大小为5的顺序表

List<Integer> list = new ArrayList<>(5);

构造方法3: 此处传入的要么是自己本身类型,或者是子类类型。 此处构造一个和list2元素一致的顺序表

List<Integer> list2 = new ArrayList<>(5); List<Integer> list = new ArrayList<>(list2);深度解析ArrayList使用(深度解析冯德伦最后为什么选了舒淇)

初始时的坑

List list = new ArrayList();

这样对顺序表进行初始化的话,没有指定任何类型,这样的话可以存放任意类型的元素,这样会存在很大的安全隐患。

三、ArrayList的常见方法常见方法

在我的上一篇实现顺序表中,已经把大多数方法手动实现了一遍,此处我在说明几个重点的。 remove方法 ArrayList提供给我们两个remove方法 一个是传入要删除的下标,一个是要删除的引用。

public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(10); list.add(8); list.remove(1); System.out.println(list); }

如果我们传入的是int类型那么我们删除的是该下标的数据。

public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(10); list.add(8); list.remove(new Integer(10)); System.out.println(list); }

如果我们传入的是引用数据类型,那么将删除该顺序表中的该引用数据。 subList方法

public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); list.add(4); System.out.println("截取之前的list:"+list); List<Integer> list1 = list.subList(1,3); list1.set(0,5); System.out.println("截取之后的list:"+list); }

为啥改了list1之后,list的数据也发生了变化。 因为在截取之后并没有复制一份内容给list1,而是指向同一块内容。

遍历ArrayList

方法1:

public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); list.add(4); for (int i = 0; i < list.size(); i++) { System.out.print(list.get(i)+" "); } System.out.println(); }

方法2:

public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); list.add(4); for (Integer x:list) { System.out.print(x+" "); } System.out.println(); }

方法3: 使用迭代器

方法作用.next()返回迭代器写一个元素,更新迭代器状态.hasNext()检测集合中是否还有元素.remove()将迭代器返回的元素删除public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); list.add(4); Iterator<Integer> it = list.listIterator(); while (it.hasNext()) { System.out.print(it.next()+" "); } System.out.println(); }使用迭代器删除元素

我们删除集合小于3的元素

public static void main(String[] args) { List<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3); list.add(4); Iterator<Integer> it = list.listIterator(); while (it.hasNext()) { if(it.next() < 3) { it.remove(); } } System.out.println(list); }

迭代器的remove方法只能删除当前指向的元素。

四、ArrayList的扩容机制List<Integer> list = new ArrayList<>();

很多资料都在说这样初始化一个集合,说默认大小为10,那事实到底是不是如此呢?我们一步步查看源码一探究竟。

我们发现当前引用指向后面那个引用 我们发现这里的引用是一个空引用,初始集合时,是一个空集合。 那如何扩容呢? 既然我们的顺序表是空的,那如何add呢? 如果是无参构造的话,就传一个默认大小和传入大小的最大值。 我们可以发现如果大于数组大小时,就会grow。 我们可以发现计算一个新容量,和我们传入的大小做比较,如果新容量小于传入的大小时,指定当前集合大小为传入的大小。否则,对集合大小进行1.5倍扩容。 但如果我们1.5倍扩容的大小超过了这个指定的范围2147483639时 系统会报一个内存溢出异常。

1. 检测是否真正需要扩容,如果是调用grow准备扩容 2. 预估需要库容的大小 初步预估按照1.5倍大小扩容 如果用户所需大小超过预估1.5倍大小,则按照用户所需大小扩容 真正扩容之前检测是否能扩容成功,防止太大导致扩容失败 3. 使用copyOf进行扩容

本文链接地址:https://www.jiuchutong.com/zhishi/300594.html 转载请保留说明!

上一篇:李宏毅深度学习笔记——呕心整理版(李宏毅课程)

下一篇:前端常见八大设计模式(前端都有哪些)

  • 闲鱼收入的钱去哪里了(闲鱼挣的钱)

    闲鱼收入的钱去哪里了(闲鱼挣的钱)

  • 苹果11照片怎么打马赛克(苹果11照片怎么设置密码)

    苹果11照片怎么打马赛克(苹果11照片怎么设置密码)

  • 怎么修改学号字段的属性为文本型(修改学号excel)

    怎么修改学号字段的属性为文本型(修改学号excel)

  • 电话被拉黑对方关机怎么提示(电话被拉黑对方能收到短信吗)

    电话被拉黑对方关机怎么提示(电话被拉黑对方能收到短信吗)

  • 淘宝申请小二介入在哪里(淘宝申请小二介入需要多久可以处理好)

    淘宝申请小二介入在哪里(淘宝申请小二介入需要多久可以处理好)

  • 中文windows7的桌面指的是(中文版windows7桌面默认图标有哪些)

    中文windows7的桌面指的是(中文版windows7桌面默认图标有哪些)

  • 手机在线观看视频是什么意思(下载手机电视)

    手机在线观看视频是什么意思(下载手机电视)

  • 美团属于阿里还是腾讯(美团属于阿里集团吗)

    美团属于阿里还是腾讯(美团属于阿里集团吗)

  • 怎么在电视上安装当贝市场(怎么在电视上安装浏览器)

    怎么在电视上安装当贝市场(怎么在电视上安装浏览器)

  • oppo锁屏有广告怎么去掉(oppo锁屏广告怎么彻底关掉)

    oppo锁屏有广告怎么去掉(oppo锁屏广告怎么彻底关掉)

  • 充电线头发黑(充电线头发黑怎么回事)

    充电线头发黑(充电线头发黑怎么回事)

  • 为什么微信视频来电时,没有铃声提示?(为什么微信视频会横过来)

    为什么微信视频来电时,没有铃声提示?(为什么微信视频会横过来)

  • qq群进不去怎么回事(qq群进不去怎么解决)

    qq群进不去怎么回事(qq群进不去怎么解决)

  • 华为p20pro和华为p30pro的区别(华为p20pro和华为p20型号怎么看)

    华为p20pro和华为p30pro的区别(华为p20pro和华为p20型号怎么看)

  • 照片存在哪儿不占内存(照片存在哪儿不会丢失)

    照片存在哪儿不占内存(照片存在哪儿不会丢失)

  • 怎么在自己的手机上录制视频(怎么在自己的手机查别人的话费)

    怎么在自己的手机上录制视频(怎么在自己的手机查别人的话费)

  • iphone变慢的解决办法(iphone变慢怎么办)

    iphone变慢的解决办法(iphone变慢怎么办)

  • opporeno3怎么关机(opporeno35g怎么关机)

    opporeno3怎么关机(opporeno35g怎么关机)

  • 怎么下载秒懂百科里的视频(怎么下载秒懂百科)

    怎么下载秒懂百科里的视频(怎么下载秒懂百科)

  • 手机怎么新建txt

    手机怎么新建txt

  • 抖音小店怎么开通(抖音小店怎么开店注册)

    抖音小店怎么开通(抖音小店怎么开店注册)

  • p30pro夜景怎么拍(华为p30p如何拍夜景)

    p30pro夜景怎么拍(华为p30p如何拍夜景)

  • 苹果手机飞行模式下别人打电话提示什么(苹果手机飞行模式能查到定位吗)

    苹果手机飞行模式下别人打电话提示什么(苹果手机飞行模式能查到定位吗)

  • 苹果没有发票能保修吗(苹果没有发票能解除ID吗)

    苹果没有发票能保修吗(苹果没有发票能解除ID吗)

  • 华为手机丢了如何定位查找(华为手机丢了如何锁定手机)

    华为手机丢了如何定位查找(华为手机丢了如何锁定手机)

  • 探探怎么划是喜欢(探探往哪划是喜欢)

    探探怎么划是喜欢(探探往哪划是喜欢)

  • i3与i5的性能差多少(i3和i5的区别有多大?性能差多少)

    i3与i5的性能差多少(i3和i5的区别有多大?性能差多少)

  • rpc和restful的区别(rpc和restful的优缺点)

    rpc和restful的区别(rpc和restful的优缺点)

  • 怎样办微信二维收钱码(微信办二维码怎么办)

    怎样办微信二维收钱码(微信办二维码怎么办)

  • iphonex支持nfc吗(iphonex能使用nfc吗)

    iphonex支持nfc吗(iphonex能使用nfc吗)

  • 哈罗单车押金怎么退(哈罗单车押金怎么交)

    哈罗单车押金怎么退(哈罗单车押金怎么交)

  • eraser.exe进程是什么文件 eraser进程查询(进程lsass.exe)

    eraser.exe进程是什么文件 eraser进程查询(进程lsass.exe)

  • 计提增值税会计科目是什么
  • 提前一个月完工奖励10万元
  • 残保金计入管理费用还是营业税金及附加
  • 房产代理经纪人
  • 现金流量表中支付的税费包括哪些
  • 经营租入的固定资产是资产吗
  • 企业所得税年度申报表A类
  • 超市费用能否税前扣减?
  • 承兑汇票怎么委托收款
  • 支票存根联要带去银行吗
  • 土地使用权入账价值
  • 顾客办理会员卡要退怎么办
  • 海关进口货物如何消杀
  • 个人去税务局开居间费发票
  • 滴滴 增值税
  • 个体户需不需要开立对公账户
  • 当月未认证的发票可以作废
  • 居间合同怎么签才算有效
  • 公司所得税汇算清缴退税流程
  • 外购固定资产如何入账
  • 企业零申报用错法人情况说明
  • 关联业务往来年度报告表
  • 笔记本设置权限管理在哪
  • 调解仲裁法什么时候实施
  • 股权无偿赠与协议书范本
  • 转账支票出账日期
  • 工程项目会计怎么样
  • 浅谈PHP发送HTTP请求的几种方式
  • 发票网上平台勾选流程
  • 目标检测yolov5
  • 递归最小二乘法辨识参数
  • 新个人所得税起征点2023
  • 坏账准备备案申请资料
  • 暂估库存商品计算怎么算
  • Linux常用命令与vim
  • 宝塔面板在哪
  • mongodb怎么用
  • 业务招待费列支不规范
  • 权责发生制 会计
  • 比赛奖金怎么做账
  • 查财务报表的网站有哪些
  • 印花税购销合同计税依据
  • Mysql LONGTEXT 类型存储大文件(二进制也可以) (修改+调试+整理)
  • mongodb 根据条件查询数量
  • 新办公司实收资本怎么算
  • 企业预缴所得税年末应该怎么交税
  • sqlserver函数语法
  • 去年暂估费用,今年收到发票怎么处理
  • 费用报销冲抵借支
  • 政府拆迁赔款会计上怎样做账
  • 房地产企业的会计核算
  • 农产品收购发票如何抵扣进项税
  • 技术服务费怎么做分录
  • 上年亏损本年要交税吗
  • 确认医院体检收费怎么办
  • 事业单位无形资产包括哪些
  • 动产不动产租赁增值税税率
  • 工业企业无形资产有哪些
  • virtualbox?
  • ubuntu系统虚拟机安装教程
  • linux以root用户登录
  • win8怎么禁用强制驱动签名
  • mac itunes
  • centos iscsi 多路径
  • macosmajove
  • 浮动浮动
  • opengl教程48讲
  • js入门基础
  • Android LayoutInflater原理分析,带你一步步深入了解View(一)
  • shell脚本实现ssh登录
  • float浮动布局原理
  • pycharm怎么学
  • django发送请求
  • js函数function用法
  • nodejs xhr
  • 提出好的建议
  • 所得税与增值税区别
  • 自然人电子税务局
  • 税收优惠政策能调动公众的捐赠积极性
  • 金水区地税局办事大厅
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设