当前位置: 首页 > news >正文

莱州双语网站网站空间

莱州双语网站,网站空间,鄂州做网站的公司,网络教学🎇个人主页:Ice_Sugar_7 🎇所属专栏:Java数据结构 🎇**欢迎点赞收藏加关注哦!* ArrayList 🍉ArrayList的构造🍉add方法🍌扩容机制🍌重要结论 🍉其…

🎇个人主页:Ice_Sugar_7
🎇所属专栏:Java数据结构
🎇**欢迎点赞收藏加关注哦!*

ArrayList

  • 🍉ArrayList的构造
  • 🍉add方法
    • 🍌扩容机制
    • 🍌重要结论
  • 🍉其他方法
  • 🍉遍历ArrayList

🍉ArrayList的构造

有三种构造方法:

方法功能
ArrayList()无参构造
ArrayList(int initialCapacity)指定顺序表初始容量进行构造
ArrayList(Collection<? extends E> c)利用其他 Collection 构建 ArrayList
  • 采用无参构造的话,生成的顺序表中的数组是一个空数组,此时我们认为没有分配内存
  • 第三种构造方法不太好理解。Collection是集合框架,?是通配符,<? extends E>是通配符泛型,表示可以接收 E 或 E 的子类的集合作为类型形参
ArrayList<Integer> list1 = new ArrayList<>();
ArrayList<Number> list2 = new ArrayList<>(list1);  //相当于new ArrayList<>(ArrayList<Integer>)

比如上面这个代码,构造list2就使用了第三种构造方法,我们拿构造list2的语句和上面的方法进行对照:
list1对应形参c,它的类型为ArrayList,ArrayList是Collection接口的实现类,而Integer是Number的子类(Integer extends Number,E就是Number)

如果你还是不太明白的话,也没关系,能知道怎么用就行了,看下这个例子:

List<Number>list3 = new ArrayList<>(list1);

我们可以发现:ArrayList是List的实现类,即List相当于是ArrayList的“父类”(这里是为了方便理解才称为“父类”,但是它和继承中所说的父类不是一回事);而Number就是Integer的父类

也就是说,=左边的泛型类的范围要比右边括号中的大


🍉add方法

方法功能
boolean add(E e)对e进行尾插
void add(int index, E element)将 e 插入到 index 位置
boolean addAll(Collection<? extends E> c)尾插 c 中所有元素

关于addAll,刚才讲构造方法的时候已经详细讲解了Collection<? extends E> c,所以下面直接看示例:

	ArrayList<Integer> list1 = new ArrayList<>();   List<Number>list3 = new ArrayList<>(list1);list1.add(1);list1.add(2);list1.add(3);list3.addAll(list1);System.out.println(list3);

在这里插入图片描述

🍌扩容机制

添加元素时,ArrayList会检查是否需要扩容

  • 若需要扩容,初步预估按照1.5倍大小扩容;如果用户所需大小超过1.5倍的大小,则按照用户所需大小扩容(真正扩容之前会检测是否能扩容成功,防止太大导致扩容失败)
  • 使用copyof方法进行扩容,将现有的元素逐个复制到新的数组中,然后新的数组取代旧的数组成为ArrayList的内部容器

🍌重要结论

通过查阅源码,我们可以得出以下两个结论,这里更重要的是记住结论,不必刻意去研究源码

结论1:对于add方法,如果顺序表一开始的有效容量为0,那么第一次add时会进行扩容,分配10个类型大小的内存

结论2ArrayList的扩容是1.5倍扩容


🍉其他方法

下面是一些常用的方法,大部分功能我们都已经在MyArrayList中实现过,在此不多赘述

方法功能
E remove(int index)删除 index 位置元素(返回被删除的元素)
boolean remove(Object o)删除遇到的第一个 o
E get(int index)获取下标 index 位置元素
E set(int index, E element)将下标 index 位置元素设置为 element
void clear()清空ArrayList
boolean contains(Object o)判断 o 是否在线性表中
int indexOf(Object o)返回第一个 o 所在下标
int lastIndexOf(Object o)返回最后一个 o 的下标
List< E> subList(int fromIndex, int toIndex)截取部分 list(注意区间是左闭右开)

🍉遍历ArrayList

有三种遍历方式:for循环+下标foreach使用迭代器

  1. for循环遍历
public static void main(String[] args) {ArrayList<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) + " ");}for (Integer integer : list) {System.out.print(integer + " ");}
}
  1. 迭代器是一种设计模式,接触更多的容器之后再讲
http://www.hkea.cn/news/117283/

相关文章:

  • 做网站应该会什么问题网络营销软文范例500字
  • 摄影网课百度关键词优化查询
  • 打广告型的营销网站西安百度推广外包
  • 乌鲁木齐招聘网站建设一站式网络营销
  • 中小型网站建设服务淘宝数据分析工具
  • 梧州网站设计企业网站模板建站
  • 行政事业单位网站建设建议营销策划公司
  • 网络推广网站怎么做百度联盟广告点击一次收益
  • wordpress居中样式宁波seo网络推广外包报价
  • java做网站用到哪些技术网络营销的重要性与意义
  • 网络营销推广的作用谷歌seo什么意思
  • 免费网站建设解决方案郑州网络营销公司哪个好
  • 转转怎么做钓鱼网站税收大数据
  • 株洲专业网站排名优化深圳产品网络推广
  • 深圳美食教学网站制作如何免费搭建自己的网站
  • 兰州移动端网站建设广东整治互联网霸王条款
  • 彩票网站该怎么建设天津seo实战培训
  • 原平的旅游网站怎么做的新冠疫情最新情况最新消息
  • 网站开发软件著作权归谁seo外包
  • 小说网站的网编具体做哪些工作南宁网站快速排名提升
  • 承德网站设计seo互联网营销培训
  • 工信部网站备案查询 手机seo专员的工作内容
  • 淘宝活动策划网站视频营销成功的案例
  • 精准营销数据杭州排名优化软件
  • 中卫网站建站设计seo学习论坛
  • wordpress初始登录seo排名赚app靠谱吗
  • 软件外包保密协议seo相关岗位
  • 后台网站开发文档下载班级优化大师app
  • 辛集城乡建设管理局网站网络营销网络推广
  • 阿里云部署一个自己做的网站吗电商网站搭建