首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

ArrayList<?扩展了A>与ArrayList<A>

ArrayList<?>扩展了A与ArrayList<A>有什么区别?

ArrayList<?>是一个通配符泛型,表示可以接受任何类型的ArrayList。它类似于一个未知类型的ArrayList,可以用来接收任何类型的ArrayList对象。在使用ArrayList<?>时,我们无法确定具体的类型,只能进行一些限制性的操作,例如添加null元素或者删除元素。由于无法确定具体类型,所以无法添加其他类型的元素。

而ArrayList<A>是一个具体类型的ArrayList,表示只能接受类型为A的元素。在使用ArrayList<A>时,我们可以确切地知道ArrayList中的元素类型是A,可以进行添加、删除、修改等操作,并且可以确保类型的一致性。

区别:

  1. ArrayList<?>可以接受任何类型的ArrayList,而ArrayList<A>只能接受类型为A的ArrayList。
  2. 在使用ArrayList<?>时,无法确定具体的类型,只能进行一些限制性的操作,而在使用ArrayList<A>时,可以确切地知道元素的类型,可以进行更多的操作。
  3. ArrayList<?>可以用于接收不同类型的ArrayList对象,而ArrayList<A>只能用于接收类型为A的ArrayList对象。

推荐的腾讯云相关产品:

  • 云数据库 TencentDB:https://cloud.tencent.com/product/cdb
  • 云服务器 CVM:https://cloud.tencent.com/product/cvm
  • 云原生容器服务 TKE:https://cloud.tencent.com/product/tke
  • 人工智能平台 AI Lab:https://cloud.tencent.com/product/ailab
  • 物联网平台 IoT Hub:https://cloud.tencent.com/product/iothub
  • 移动开发平台 MSDK:https://cloud.tencent.com/product/msdk
  • 分布式存储 CFS:https://cloud.tencent.com/product/cfs
  • 区块链服务 BaaS:https://cloud.tencent.com/product/baas
  • 腾讯云元宇宙:https://cloud.tencent.com/solution/virtual-universe
页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

ArrayList,VectorStack

本文非常详尽地介绍Java中的三个集合类 ArrayList,VectorStack ”Java集合详解系列“是我在完成Java基础篇的系列博客后准备开始写的新系列。...处理这个ensureCapacity()这个扩容数组外,ArrayList还给我们提供将底层数组的容量调整为当前列表保存的实际元素的大小的功能。它可以通过trimToSize()方法来实现。...ensureCapacityHelper(elementCount + 1); // elementData[elementCount++] = obj; // } 初始容量和扩容 扩容方式ArrayList...ArrayList的优点如下: 1、ArrayList底层以数组实现,是一种随机访问模式,再加上它实现RandomAccess接口,因此查找也就是get的时候非常快 2、ArrayList在顺序添加一个元素的时候非常方便...的线程安全版本,其实现90%和ArrayList都完全一样,区别在于: 1、Vector是线程安全的,ArrayList是线程非安全的 2、Vector可以指定增长因子,如果该增长因子指定,那么扩容的时候会每次新的数组大小会在原数组的大小基础上加上增长因子

63230

ArrayListVector比较

绿色部分内容已经很少用了,但在面试题中有可能会问到,我们来看一个经常出现的面试题:ArraylistVector的区别是什么?...首先我们给出标准答案: 1、Vector是线程安全的,ArrayList不是线程安全的。 2、ArrayList在底层数组不够用时在原来的基础上扩展0.5倍,Vector是扩展1倍。...看上图Vector和ArrayList一样,都继承自List,来看一下Vector的源码 实现List接口,底层是数组实现 实现List接口,底层和ArrayList一样,都是数组来实现的...先看ArrayList的remove方法 再看Vector的remove方法 方法实现上也一样,就是多了一个synchronized关键字,再看看ArrayList的get方法...(多线程环境不允许用ArrayList,需要做处理)。 至于底层数组的扩容区别,这里就不带着大家读源码,有兴趣的朋友大家自己读吧,底层代码几乎是一样的,不同的只是计算后的新数组长度不一致。

23520

ArrayList

不存在一个集合工具是查询效率又高,增删效率也高的,还线程安全的,至于为啥大家看代码就知道,因为数据结构的特性就是优劣共存的,想找个平衡点很难,牺牲性能,那就安全,牺牲安全那就快速。...而且将构造函数initialCapacity结合使用,然后使用set()会抛出异常,尽管该数组已创建,但是大小设置不正确。...大家可能有点懵,我直接操作一下代码,大家会发现我们虽然对ArrayList设置初始大小,但是我们打印List大小的时候还是0,我们操作下标set值的时候也会报错,数组下标越界。...index5的位置就成功被”删除“其实就是被覆盖了,给你被删除的感觉。 同理他的效率也低,因为数组如果很大的话,一样需要复制和移动的位置就大ArrayList是线程安全的么?...总结 ArrayList就是动态数组,用MSDN中的说法,就是Array的复杂版本,它提供动态的增加和减少元素,实现ICollection和IList接口,灵活的设置数组的大小等好处。

72220

ArrayList

ArrayList简介   ArrayList 的底层是数组队列,相当于动态数组。 Java 中的数组相比,它的容量能动态增长。...在我们学数据结构的时候就知道线性表的顺序存储,插入删除元素的时间复杂度为O(n),求表长以及增加元素,取第 i 元素的时间复杂度为O(1)   ArrayList 继承AbstractList,实现...它是一个数组队列,提供相关的添加、删除、修改、遍历等功能。   ...ArrayList 实现RandomAccess 接口, RandomAccess 是一个标志接口,表明实现这个这个接口的 List 集合是支持快速随机访问的。...在 ArrayList 中,我们即可以通过元素的序号快速获取元素对象,这就是快速随机访问。   ArrayList 实现Cloneable 接口,即覆盖了函数 clone(),能被克隆。

1.1K30

ArrayListVector的区别

ArrayListVector都是java的集合类,都是实现List接口的实现类 一:同步性: Vector是同步的,该类的方法保证Vector对象是线程安全的,而ArrayList是异步的,因此...ArrayList中的对象并不是线程安全的,因为同步的要求会影响执行的效率。...所以如果比不需要线程安全的集合,那么应该毫不犹豫的使用ArrayList,这样可以避免由于同步带了的不必要的开下。...二:数据增长: 从内部实现机制来讲,ArrayList和Vector都是使用数组来控制集合中的对象,当你向这两种类型中增加元素的时候,如果元素的数目超出了目前数组的长度,它们都需要扩展内部数组的长度,Vector...ArrayList增长为原来50%,所以见你最后获得的这个集合所占的空间,总是比你实际需要的更大。

39610

ArrayListLinkedList的比较

前言 在做ArrayListLinkedList的比较之前,必须先对这两个数据结构有一定的学习和掌握,之前2篇文章分别讲了ArrayListLinkedList的介绍和源码讲解,感兴趣的伙伴可以戳下方链接分别查阅...那么,ArrayList是Array的升级和复杂版,它能支持程序运行中动态扩展数组的大小,因此它是动态数组。 使用上,ArrayList是动态数组,支持随机快速访问get和set操作。...(内容),还存储下一节点的引用。...单独节点元素: image.png LinkedList整体链表结构图: image.png 四、ArrayListLinkedList的比较 ArrayList是实现基于动态数组的数据结构,而...插入的数据量很小时,两者区别不太大,当插入的数据量大时,大约在容量的1/10之前,LinkedList会优于ArrayList,在其后就劣ArrayList,且越靠近后面越差。

47320

ArrayList顺序表(2)

ArrayList是以泛型方式实现的,所以使用时必须要先实例化 2. ArrayList实现RandomAccess接口,表明ArrayList支持随机访问 3....ArrayList实现Cloneable接口,表明ArrayList是可以clone的 4....ArrayList实现Serializable接口,表明ArrayList是支持序列化的 5....第三个构造方法 里面涉及泛型的进阶,我们这也不怎么好描述,就直接说特点吧: 下面是这个构造方法的一些特点: 参数c要求是实现Collection接口的对象, 参数c中的元素类型必须ArrayList...extends E> c) 其中有以下要求: 参数c要求是实现Collection接口的对象, 参数c中的元素类型必须ArrayList中的元素类型兼容,即参数c中的元素类型必须是ArrayList

8310

ArrayListLinkedList的比较

原创不易,且行且珍惜” 在做ArrayListLinkedList的比较之前,必须先对这两个数据结构有一定的学习和掌握,之前2篇文章分别讲了ArrayListLinkedList的介绍和源码讲解...其中,ArrayListLinkedList就是属于线性结构,但一个是数组结构,一个是链表结构。有各自的特点和优势,在使用上也有各自的区别。...那么,ArrayList是Array的升级和复杂版,它能支持程序运行中动态扩展数组的大小,因此它是动态数组。 使用上,ArrayList是动态数组,支持随机快速访问get和set操作。...(内容),还存储下一节点的引用。...4、当插入的数据量很小时,两者区别不太大,当插入的数据量大时,大约在容量的1/10之前,LinkedList会优于ArrayList,在其后就劣ArrayList,且越靠近后面越差。

29740

浅谈ArrayList

一、ArrayList的继承体系和特点 ArrayList总体继承体系图如下: ?...ArrayList的特点主要有以下几点: ArrayList在内存中分配连续的存储空间,可理解为长度可变的数组。 ArrayList存储元素可以重复,存储顺序和添加顺序一致。...二、ArrayList的用法 List list = new ArrayList();//使用多态创建ArrayList,泛型指定该ArrayList只能放String类型的元素...为了保证用户增加新的对象,java设置最小容量(minCapacity),通常情况下,它大于列表对象的数目,所以Capactiy虽然就是底层数组的长度(length),但是对于最终用户来讲,它是没有意义的...modCount属性在ArrayList的父类AbstractList中定义,用于存储结构修改次数。 此方法比较minCapacityelementData.length的大小。

71420

Kotlin 的 val list: ArrayList= ArrayList() 居然报错!

也许看了我们的题目,大家还没有明白过来到底发生了什么,那么我请大家再仔细看看: val list: ArrayList= ArrayList()...好吧,我大概猜到原因,泛型参数后半个 > 估计后面赋值用的 = 连起来被识别成了 >=,于是乎。。。 ?...一旦 PsiElement 构造完成,那么词法分析实际上就结束,后面的 KotlinParser 就是语法分析。这样看起来似乎跟我们前面猜测的没有什么两样。 ?...好啦,其实这都不是什么大问题了,这篇文章探讨的那句代码本身就比较蛋疼: val list: ArrayList= ArrayList() 我就问你为什么不去掉前面的类型,类型推导难道还不够吗...val list = ArrayList() 或者在 >= 中间打一个空格嘛,这样就啥事儿没有

1.2K10
领券