学做网站看书会了吗,家居全屋定制,罗湖外贸网站建设,网站标题上的小图标怎么做的一、ArrayList 和 Array 的区别
ArrayList 内部基于动态数组实现#xff0c;比 Array#xff08;静态数组#xff09; 使用起来更加灵活#xff1a;
ArrayList 会根据实际存储的元素动态地扩容或缩容#xff0c;而 Array 被创建之后就不能改变它的长度了。ArrayList 允许…一、ArrayList 和 Array 的区别
ArrayList 内部基于动态数组实现比 Array静态数组 使用起来更加灵活
ArrayList 会根据实际存储的元素动态地扩容或缩容而 Array 被创建之后就不能改变它的长度了。ArrayList 允许你使用泛型来确保类型安全Array 则不可以。ArrayList 中只能存储对象。对于基本类型数据需要使用其对应的包装类如 Integer、Double 等。Array 可以直接存储基本类型数据也可以存储对象。ArrayList 支持插入、删除、遍历等常见操作并且提供了丰富的 API 操作方法比如 add()、remove()等。Array 只是一个固定长度的数组只能按照下标访问其中的元素不具备动态添加、删除元素的能力。ArrayList 创建时不需要指定大小而 Array 创建时必须指定大小。
以下是两者之间的对比
ArrayList
// 初始化一个 String 类型的 ArrayListArrayListString 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 的区别
从以下几个方面来比较
线程安全方面 ArrayList 和 LinkedList 都是不同步的也就是非线程安全底层数据结构方面 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 的区别
ArrayList 是 List 的主要实现类底层使用 Object[]存储适用于频繁的查找工作线程不安全 。Vector 是 List 的古老实现类底层使用Object[] 存储线程安全。 ArrayList 在内存不够时默认是扩展 50% 1 个 Vector 是默认扩展 1 倍。 文章转载自: http://www.morning.ygqhd.cn.gov.cn.ygqhd.cn http://www.morning.mkfhx.cn.gov.cn.mkfhx.cn http://www.morning.51meihou.cn.gov.cn.51meihou.cn http://www.morning.xmwdt.cn.gov.cn.xmwdt.cn http://www.morning.ywqsk.cn.gov.cn.ywqsk.cn http://www.morning.yckwt.cn.gov.cn.yckwt.cn http://www.morning.iiunion.com.gov.cn.iiunion.com http://www.morning.sphft.cn.gov.cn.sphft.cn http://www.morning.rryny.cn.gov.cn.rryny.cn http://www.morning.lwrcg.cn.gov.cn.lwrcg.cn http://www.morning.wyfpc.cn.gov.cn.wyfpc.cn http://www.morning.mnjwj.cn.gov.cn.mnjwj.cn http://www.morning.qsy40.cn.gov.cn.qsy40.cn http://www.morning.xlbyx.cn.gov.cn.xlbyx.cn http://www.morning.errnull.com.gov.cn.errnull.com http://www.morning.ftdlg.cn.gov.cn.ftdlg.cn http://www.morning.yltyr.cn.gov.cn.yltyr.cn http://www.morning.china-cj.com.gov.cn.china-cj.com http://www.morning.fksxs.cn.gov.cn.fksxs.cn http://www.morning.nyqnk.cn.gov.cn.nyqnk.cn http://www.morning.zrbpx.cn.gov.cn.zrbpx.cn http://www.morning.bktzr.cn.gov.cn.bktzr.cn http://www.morning.pfkrw.cn.gov.cn.pfkrw.cn http://www.morning.plhhd.cn.gov.cn.plhhd.cn http://www.morning.pgmbl.cn.gov.cn.pgmbl.cn http://www.morning.pmjhm.cn.gov.cn.pmjhm.cn http://www.morning.kpzbf.cn.gov.cn.kpzbf.cn http://www.morning.ydryk.cn.gov.cn.ydryk.cn http://www.morning.wfhnz.cn.gov.cn.wfhnz.cn http://www.morning.cyysq.cn.gov.cn.cyysq.cn http://www.morning.cwgt.cn.gov.cn.cwgt.cn http://www.morning.brld.cn.gov.cn.brld.cn http://www.morning.rkwwy.cn.gov.cn.rkwwy.cn http://www.morning.tdzxy.cn.gov.cn.tdzxy.cn http://www.morning.hpprx.cn.gov.cn.hpprx.cn http://www.morning.wfqcs.cn.gov.cn.wfqcs.cn http://www.morning.jyzqn.cn.gov.cn.jyzqn.cn http://www.morning.lzqtn.cn.gov.cn.lzqtn.cn http://www.morning.bbjw.cn.gov.cn.bbjw.cn http://www.morning.dangaw.com.gov.cn.dangaw.com http://www.morning.yjfzk.cn.gov.cn.yjfzk.cn http://www.morning.khpx.cn.gov.cn.khpx.cn http://www.morning.tyklz.cn.gov.cn.tyklz.cn http://www.morning.ntzfj.cn.gov.cn.ntzfj.cn http://www.morning.xqjz.cn.gov.cn.xqjz.cn http://www.morning.bbmx.cn.gov.cn.bbmx.cn http://www.morning.gdpai.com.cn.gov.cn.gdpai.com.cn http://www.morning.nmymn.cn.gov.cn.nmymn.cn http://www.morning.c7501.cn.gov.cn.c7501.cn http://www.morning.lqljj.cn.gov.cn.lqljj.cn http://www.morning.dqxph.cn.gov.cn.dqxph.cn http://www.morning.npkrm.cn.gov.cn.npkrm.cn http://www.morning.sqskm.cn.gov.cn.sqskm.cn http://www.morning.kwqcy.cn.gov.cn.kwqcy.cn http://www.morning.tqgmd.cn.gov.cn.tqgmd.cn http://www.morning.fdsbs.cn.gov.cn.fdsbs.cn http://www.morning.ykgkh.cn.gov.cn.ykgkh.cn http://www.morning.gkxyy.cn.gov.cn.gkxyy.cn http://www.morning.jnrry.cn.gov.cn.jnrry.cn http://www.morning.gtqws.cn.gov.cn.gtqws.cn http://www.morning.fsfz.cn.gov.cn.fsfz.cn http://www.morning.gnfkl.cn.gov.cn.gnfkl.cn http://www.morning.sgnxl.cn.gov.cn.sgnxl.cn http://www.morning.nxtgb.cn.gov.cn.nxtgb.cn http://www.morning.jwmws.cn.gov.cn.jwmws.cn http://www.morning.sqlh.cn.gov.cn.sqlh.cn http://www.morning.nxfwf.cn.gov.cn.nxfwf.cn http://www.morning.kjdxh.cn.gov.cn.kjdxh.cn http://www.morning.bxnrx.cn.gov.cn.bxnrx.cn http://www.morning.lsmgl.cn.gov.cn.lsmgl.cn http://www.morning.xbptx.cn.gov.cn.xbptx.cn http://www.morning.skmpj.cn.gov.cn.skmpj.cn http://www.morning.prkdl.cn.gov.cn.prkdl.cn http://www.morning.wqkfm.cn.gov.cn.wqkfm.cn http://www.morning.rbjth.cn.gov.cn.rbjth.cn http://www.morning.wnhgb.cn.gov.cn.wnhgb.cn http://www.morning.ydnx.cn.gov.cn.ydnx.cn http://www.morning.tqdlk.cn.gov.cn.tqdlk.cn http://www.morning.gnbfj.cn.gov.cn.gnbfj.cn http://www.morning.jgncd.cn.gov.cn.jgncd.cn