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

南宁网站建设产品介绍曲阜市政对过做网站的是那家

南宁网站建设产品介绍,曲阜市政对过做网站的是那家,做网站多少钱jf西宁君博出众,wordpress商城微信支付宝一、ArrayList 和 Array 的区别 ArrayList 内部基于动态数组实现,比 Array(静态数组) 使用起来更加灵活: ArrayList 会根据实际存储的元素动态地扩容或缩容,而 Array 被创建之后就不能改变它的长度了。ArrayList 允许…

一、ArrayList 和 Array 的区别

ArrayList 内部基于动态数组实现,比 Array(静态数组) 使用起来更加灵活:

  • ArrayList 会根据实际存储的元素动态地扩容或缩容,而 Array 被创建之后就不能改变它的长度了。
  • ArrayList 允许你使用泛型来确保类型安全,Array 则不可以。
  • ArrayList 中只能存储对象。对于基本类型数据,需要使用其对应的包装类(如 Integer、Double 等)。Array 可以直接存储基本类型数据,也可以存储对象。
  • ArrayList 支持插入、删除、遍历等常见操作,并且提供了丰富的 API 操作方法,比如 add()remove()等。Array 只是一个固定长度的数组,只能按照下标访问其中的元素,不具备动态添加、删除元素的能力。
  • ArrayList 创建时不需要指定大小,而 Array 创建时必须指定大小。

以下是两者之间的对比:

ArrayList:

// 初始化一个 String 类型的 ArrayListArrayList<String> stringList = new ArrayList<>(Arrays.asList("hello", "world", "!"));// 添加元素到 ArrayList 中stringList.add("goodbye");System.out.println(stringList); // [hello, world, !, goodbye]// 修改 ArrayList 中的元素stringList.set(0, "hi");System.out.println(stringList); // [hi, world, !, goodbye]// 删除 ArrayList 中的元素stringList.remove(0);System.out.println(stringList); // [world, !, goodbye]

Array: 

 // 初始化一个 String 类型的数组String[] stringArr = new String[]{"hello", "world", "!"};// 修改数组元素的值stringArr[0] = "goodbye";System.out.println(Arrays.toString(stringArr)); // [goodbye, world, !]// 删除数组中的元素,需要手动移动后面的元素for (int i = 0; i < stringArr.length - 1; i++) {stringArr[i] = stringArr[i + 1];}stringArr[stringArr.length - 1] = null;System.out.println(Arrays.toString(stringArr)); // [world, !, null]

二、ArrayList 和 LinkedList 的区别

从以下几个方面来比较:

  • 线程安全方面: ArrayListLinkedList 都是不同步的,也就是非线程安全;
  • 底层数据结构方面: ArrayList 底层使用的是 Object 数组LinkedList 底层使用的是 双向链表 数据结构(JDK1.6 之前为循环链表,JDK1.7 取消了循环。注意双向链表和双向循环链表的区别,下面有介绍到!)
  • 插入和删除是否受元素位置的影响:
    • ArrayList 采用数组存储,所以插入和删除元素的时间复杂度受元素位置的影响。 比如:执行add(E e)方法的时候, ArrayList 会默认在将指定的元素追加到此列表的末尾,这种情况时间复杂度就是 O(1)。但是如果要在指定位置 i 插入和删除元素的话(add(int index, E element)),时间复杂度就为 O(n)。因为在进行上述操作的时候集合中第 i 和第 i 个元素之后的(n-i)个元素都要执行向后位/向前移一位的操作。
    • LinkedList 采用链表存储,所以在头尾插入或者删除元素不受元素位置的影响(add(E e)addFirst(E e)addLast(E e)removeFirst()removeLast()),时间复杂度为 O(1),如果是要在指定位置 i 插入和删除元素的话(add(int index, E element)remove(Object o),remove(int index)), 时间复杂度为 O(n) ,因为需要先移动到指定位置再插入和删除。
  • 是否支持快速随机访问: LinkedList 不支持高效的随机元素访问,而 ArrayList(实现了 RandomAccess 接口) 支持。快速随机访问就是通过元素的序号快速获取元素对象(对应于get(int index)方法)。
  • 内存空间占用: ArrayList 的空间浪费主要体现在在 list 列表的结尾会预留一定的容量空间,而 LinkedList 的空间花费则体现在它的每一个元素都需要消耗比 ArrayList 更多的空间(因为要存放直接后继和直接前驱以及数据)。

我们在项目中一般是不会使用到 LinkedList 的,需要用到 LinkedList 的场景几乎都可以使用 ArrayList 来代替,并且,性能通常会更好! 

补充:双向链表双向循环链表

双向链表: 包含两个指针,一个 prev 指向前一个节点,一个 next 指向后一个节点。

双向循环链表: 最后一个节点的 next 指向 head,而 head 的 prev 指向最后一个节点,构成一个环。

三、ArrayList 和 Vector  的区别

  • ArrayListList 的主要实现类,底层使用 Object[]存储,适用于频繁的查找工作,线程不安全 。
  • VectorList 的古老实现类,底层使用Object[] 存储,线程安全。
  • ArrayList 在内存不够时默认是扩展 50% + 1 个, Vector 是默认扩展 1 倍。
http://www.yayakq.cn/news/335978/

相关文章:

  • 商城站时刻表苏州保洁公司排行榜
  • 拜年图片制作网站优化找谁
  • 学生兼职网站开发网站维护 推广
  • 做婚纱影楼网站的价格wordpress使用手册
  • 实际网站开发怎样分工文字生成图片在线使用
  • 公司网站 制作wordpress google ajax
  • 文明网站建设培训体会设计分为几种类型
  • 镇江网站定制新云网站模版
  • 网站式的公司记录怎么做专业网站制作的地方
  • 专业网站建设定制公司优化网站排名工具
  • 韩国唯美网站设计网页开发工具怎么调出来
  • 盐城高端网站制作公司电商卖货平台
  • 杭州网站建设费用多少钱c可以做网站么
  • 佛山网站设计常用cms系统
  • 受欢迎的菏泽网站建设免费视频网站推荐
  • 国外网站 国内访问速度网站制作方案包含哪些内容
  • 哪个网站做外链视频好无锡手机网站制作
  • 获取网站漏洞后下一步怎么做网站设计与制作软件
  • 门户网站开发的意义自助推广平台
  • 有专门做电商网站的CMS吗wordpress 建点
  • 乌兰察布做网站物流网络规划名词解释
  • 建设银行甘肃省分行网站做网站推广托管费用
  • 电商网站如何做引流网站建设成功案例书籍
  • 网站数据库备份还原wordpress配置ftp服务器配置
  • 益阳网站建设广告西安网页制作设计
  • 做电影网站采集什么意思用dw制作个人简介网页步骤
  • 网站建设毕业答辩ppt南通专业网站排名推广
  • 北京网站建设公司费用浩森宇特自己做彩票网站简单吗
  • 深圳做网站设计的公司电商平台网站开发
  • 用wordpress搭建完整网站教程视频Python电影网站开发