首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏落叶飞翔的蜗牛

    ArrayList源码解析(2

    SuppressWarnings("unchecked") public <T> T[] toArray(T[] a) { if (a.length < size) // 新建一个运行时类型的数组,但是ArrayList //这里看到ArrayList添加元素的实质就相当于为数组赋值 elementData[size++] = e; return true; } /** * 在此列表中的指定位置插入指定的元素

    38920发布于 2021-01-28
  • 来自专栏用户7621540的专栏

    Arraylist 与 LinkedList面试题

    增加和删除效率:在非首尾的增加和删除操作,LinkedList 要比 ArrayList 效率要高,因为 ArrayList 增删操作要影响数组内的其他数据的下标。 四:Array 和 ArrayList 区别? Array 可以存储基本数据类型和对象,ArrayList 只能存储对象。 Array 是指定固定大小的,而 ArrayList 大小是自动扩展的。 Array 内置方法没有 ArrayList 多,比如 addAll、removeAll、iteration 等方法只有 ArrayList 有。 (2)Iterator只可以向前遍历,而LIstIterator可以双向遍历。 八、ArrayList的数据结构 ArrayList的底层数据结构就是一个数组,数组元素的类型为Object类型,对ArrayList的所有操作底层都是基于数组的。默认容量是10 ? ?

    1.5K20发布于 2020-09-16
  • 来自专栏兜兜毛毛

    Java集合---ArrayList2

    实现算法 ArrayList的底层实现方式其实就是Object[]数组实现,根据封装会存储实际存储大小Size对象,与存放数据的elementData。 work return oldValue; } 扩容机制 扩容时机:是在加入数据时,elementData已满时进行扩容 扩充的新数组长度是: 原数组长度 + (原数组长度 / 2)

    46120发布于 2019-10-23
  • 来自专栏cjz的专栏

    面试题: ArrayList 与 Vector 区别?

    可以由两个线程安全地访问一个 Vector对象.但是一个线程访问Vector 的话代码要在同步操作上耗费大量的时间 ArrayList不是同步的,所以在不需要保证线程安全时时建议使用ArrayList

    18420编辑于 2022-12-21
  • 来自专栏编程学习之路

    ArrayList与顺序表(2

    ArrayList是以泛型方式实现的,所以使用时必须要先实例化 2. ArrayList实现了RandomAccess接口,表明ArrayList支持随机访问 3. (内容牵涉到了迭代器,这里就不细讲) ArrayList<Integer> list = new ArrayList<>(); list.add(1); list.add(2); list.add(3) arrayList.add(2); arrayList.add(3); arrayList.add(4); arrayList.add(5); = arrayList.lastIndexOf(2); System.out.println("最后一个2的下标:" + lastIndex); // 11,获取顺序表长度 ArrayList<>(); arrayList.add(1); arrayList.add(2); arrayList.add(3);

    33410编辑于 2024-04-24
  • 来自专栏归思君的技术博客

    集合框架2- ArrayList

    2.ArrayList 的成员属性 private static final int DEFAULT_CAPACITY = 10; //默认初始容量为10 private static final Object arraylist 中 clear() 删除 arraylist 中的所有元素 clone() 复制一份 arraylist contains() 判断元素是否在 arraylist get() 通过索引值获取 ) { // overflow-conscious code int oldCapacity = elementData.length; //在以前的容量基础上增加旧容量的1/2 Integer.MAX_VALUE : MAX_ARRAY_SIZE; } 四、ArrayList 相关面试题 1. 2.

    33830编辑于 2023-10-16
  • 来自专栏程序员修炼之路

    Android经典面试题ArrayList的原理,List和ArrayList的区别?

    欢迎点击上方"AntDream"关注我,每天进步一点点 ArrayList public class ArrayList<E> extends AbstractList<E> implements 复杂度为O(n) 2、 默认容量大小为10,超过这个容量就会进行扩容,扩容的话最终调用的是System.arraycopy方法,这是一个native方法 3、 ArrayList里面允许存储null值 4、 ArrayList不是线程安全的,只能用于单线程环境下 面试常问的一个问题 关于ArrayList一个常问的问题就是List和ArrayList的区别 实际上答案很简单,就是一个是接口一个是具体实现的关系 ,ArrayList是List的其中一个具体实现类。 以上是基于Java1.8并且只介绍了常用的一些方法的原理,详细的ArrayList源码请查看:ArrayList源码 END 点亮【赞和在看】,让钱和爱都流向你。

    34210编辑于 2024-07-10
  • 来自专栏别明天就今天吧

    面试题-List之ArrayList、Vector、SynchronizedList、CopyOnWriteArrayList

    容器中的List在我们日常开发中,比较常用,而且也是面试的必考题,下面我们来说下List家族的各种实现; 1.ArrayList ArrayList底层是数组实现,顺序插入,可以通过下标查找元素 容易出现问题的地方在于,elementData[size++] = e;首先把元素赋值给数组,然后长度增加,当两个线程同时增加元素时,线程1拿到时间片赋值elementData[size] = 1,执行后失去时间片,线程2获得时间片 ,elementData[size] = 2,这样线程1的值就被线程给覆盖了,长度两次增加变成2,实际上第2个值是null,这样就出现了问题;同时遍历时需改也存在java.util.ConcurrentModificationException 异常; 2.Vector Vector底层也是数组,它和ArrayList的区别在于add、set、get方等法上都加了synchronized关键字,这样就保证了多线程下的线程安全问题,但是效率不如 ArrayList; 3.SynchronizedList SynchronizedList是容器工具包提供的包装同步类,List<String> stringList = Collections.synchronizedList

    87840发布于 2020-09-07
  • 来自专栏爪哇缪斯

    面试题4:ArrayList与LinkedList的区别?

    首先,他们的底层数据结构不同,ArrayList底层是基于数组实现的,LinkedList底层是基于链表实现的。 由于底层数据结构不同,他们所适用的场景也是不同的,ArrayList更适合随机查找,LinkedList更适合删除和添加; 另外ArrayList和LinkedList都实现了List接口,但是LinkedList ArrayList源码流程图: LinkedList源码解析:

    18010编辑于 2023-05-09
  • 来自专栏须臾之余

    ArrayList和CopyOnWriteArrayList面试题总结与源码分析

    面试题 (1)ArrayList和CopyOnWriteArrayList的增删改查实现原理? (2)为什么说ArrayList查询快而增删慢? (3)弱一致性的迭代器原理是怎么样的? 2.ArrayList的几个重点 1、底层是数组,初始化大小为10 2、插入时会判断数组容量是否足够,不够的化会进行扩容 3、所谓扩容就是新建一个数组,然后将老的数据里面的元素复制到新的数组里面 2.删 /** * Removes the element at the specified position in this list. arrayList.remove(1); //——删除元素 arrayList.remove(2); }); Iterator<String> iterator 子线程thread启动后首先修改了arrayList的第一个元素的值,然后删除了arrayList对应下标的元素。

    1.9K40发布于 2019-07-19
  • 来自专栏cwl_Java

    经典面试题-ArrayList、LinkedList和Vector的区别

    本文链接:https://blog.csdn.net/weixin_42528266/article/details/103106176 ArrayList:底层数据结构是数组,运行所有元素,包括null

    58210发布于 2019-11-18
  • 来自专栏朱永胜的私房菜

    面试题精讲】ArrayList 和 Vector 的区别?

    什么是ArrayList和Vector? ArrayList和Vector都是Java中的集合类,用于存储和操作一组对象。它们都实现了List接口,并且底层使用数组来保存数据。 2. ArrayList ArrayList内部使用一个Object类型的数组来保存元素。 ArrayList和Vector的使用示例 下面是ArrayList和Vector的使用示例: import java.util.ArrayList; import java.util.Vector; ArrayList<String> arrayList = new ArrayList<>();         arrayList.add("apple");         arrayList.add ArrayList和Vector的缺点 线程安全性:ArrayList不是线程安全的,如果多个线程同时修改ArrayList可能会导致数据不一致。

    58440编辑于 2023-10-22
  • 来自专栏朱永胜的私房菜

    面试题精讲】ArrayList 和 Array(数组)的区别?

    2. 为什么需要ArrayList和Array(数组)? ArrayList:由于ArrayList可以动态调整大小,因此非常适合在运行时添加、删除或修改元素的情况下使用。 ArrayList和Array(数组)的区别 大小调整: ArrayListArrayList可以根据需要自动增长或缩小其容量。 ArrayList和Array(数组)的使用示例 // 使用ArrayList ArrayList<String> list = new ArrayList<>(); list.add("apple") )); // 输出 3 // 使用数组 String[] array = new String[3]; array[0] = "apple"; array[1] = "banana"; array[2] ArrayList和Array(数组)的缺点 ArrayList的缺点: 相比于数组,ArrayList占用更多的内存空间。

    70850编辑于 2023-10-22
  • 来自专栏Java高频面试题

    竟然还有人说ArrayList2倍扩容,今天带你手撕ArrayList源码

    ArrayList是我们开发中最常用到的集合,但是很多人对它的源码并不了解,导致面试时,面试官问的稍微深入的问题,就无法作答,今天我们一起来探究一下ArrayList源码。1. 简介ArrayList底层是数组,允许元素是null,能够动态扩容size、isEmpty、get、set、add 等方法时间复杂度都是 O (1)非线程安全,并发修改时,会抛出ConcurrentModificationException2 grow(int minCapacity) { int oldCapacity = elementData.length; // oldCapacity >> 1 是把oldCapacity除以2, = size) { // 1:可能是上面的for循环出现了异常 // 2:可能是其它线程添加了元素 System.arraycopy(elementData 总结本文分析了ArrayList的初始化、put、add、remove、动态扩容等方法的底层源码,相信大家对于ArrayList有了更深层次的了解,下篇一块学习一下LinkedList的源码。

    38920编辑于 2022-09-15
  • 来自专栏FREE SOLO

    2019面试题:请解释ArrayList和Vector的区别?

    面试题:请解释ArrayList和Vector的区别? No. 区别 ArrayList Vector 1 推出时间 JDK 1.2 JDK 1.0 2 性能 采用异步处理方式,性能更高 采用同步处理方式,性能相对较低 3 安全性 非线程安全 线程安全 使用Hashtable的简单示例如下,将1,2,3放到Hashtable中,他们的key分别是”one”,”two”,”three”:     Hashtable numbers = new Hashtable ();     numbers.put(“one”, new Integer(1));     numbers.put(“two”, new Integer(2));     numbers.put (“three”, new Integer(3));   要取出一个数,比如2,用相应的key:     Integer n = (Integer)numbers.get(“two”);     

    70600发布于 2019-04-18
  • 来自专栏朱永胜的私房菜

    面试题精讲】ArrayList 可以添加 null 值吗

    ArrayList 是 Java 中的一个动态数组,可以存储任意类型的对象。在 ArrayList 中是可以添加 null 值的。 ) {         ArrayList<String> list = new ArrayList<>();                  list.add(null);         list.add 最后打印输出整个 ArrayList 的内容。 需要注意的是,在使用 ArrayList 存储 null 值时,要确保 ArrayList 的泛型类型允许为 null。 例如,如果声明 ArrayList<int> 这样的列表,则无法将 null 添加到该列表中,因为 int 类型不允许为 null。 总结: ArrayList 可以添加 null 值。 在使用 ArrayList 存储 null 值时,要确保 ArrayList 的泛型类型允许为 null。

    74520编辑于 2023-10-22
  • 来自专栏Java那些事

    ArrayList

    帅丙,上次面试到现在都过去2个星期你才过来,为啥鸽了这么久? 美丽迷人的面试官您好,因为之前得了流感,差点就没了,还有最近年底忙年会和年终review的事情,实在太忙了,不好意思。 ? 就比如我们现在有一个长度为10的数组,现在我们要新增一个元素,发现已经满了,那ArrayList会怎么做呢? ? 第一步他会重新定义一个长度为10+10/2的数组也就是新增一个长度为15的数组。 ? 因为我们在使用ArrayList的时候一般不会设置初始值的大小,那ArrayList默认的大小就刚好是10。 ? 在扩容的时候,老版本的jdk和8以后的版本是有区别的,8之后的效率更高了,采用了位运算,右移一位,其实就是除以2这个操作。 ? ArrayList(int initialCapacity)会不会初始化数组大小? 这是什么问题?卧槽问个ArrayList还能问到知识盲区? ?

    1.1K20发布于 2020-02-12
  • 来自专栏后端技术

    ArrayList

    ArrayList(Collection<? extends E> c) public ArrayList(Collection<?

    73130发布于 2019-05-25
  • 来自专栏后端码匠

    ArrayList

    + (oldCapacity >> 1); 右移一位相当于除2,右移n位相当于除以 2 的 n 次方。 ; arrayList.toArray(integer1); // 抛出异常,java不支持向下转型 //Integer[] integer2 = new Integer[arrayList.size()]; //integer2 = arrayList.toArray(); System.out.println (); // 在指定位置添加元素 arrayList.add(2,2); // 删除指定位置上的元素 arrayList.remove (2); // 删除指定元素 arrayList.remove((Object)3); // 判断arrayList是否包含5

    1.5K30发布于 2019-09-30
  • 来自专栏java一日一条

    Java 容器 & 泛型(2):ArrayList 、LinkedList和Vector比较

    确切的讲,列表通常允许满足 e1.equals(e2) 的元素对 e1 和 e2,并且如果列表本身允许 null 元素的话,通常它们允许多个 null 元素。 ; System.out.print("指定角标2删除:\n\t"+a1+"\n"); System.out.print("指定角标2查询:\n\t : [List01, List02, List04] 指定角标2查询: List04 用迭代器查询全部元素: List01,List02,List04 在上面我们可以根据角标来增加(add 2、记住并发修改异常 java.util.ConcurrentModificationException ,优先考虑ArrayList,除非你在使用多线程所需。 2、于新增和删除操作add和remove,LinedList比较占优势,ArrayList要移动数据。

    67310发布于 2018-09-19
领券