List和它的实现类的问题
既然说List list= new ArrayList()是把一个创建的ArrayList对象向上转型到List
又说道现在使用ArrayList 以后使用LinkedList时方便更改
可是不是最后都转型到了List,而且只能用List的属性方法,那么这种方便更改有什么作用呢?
转型为List又不能使用ArrayList独有的方法属性,那么为什么又要说以后使用其他的List实现类方便更改?
正在回答 回答被采纳积分+1
同学你好,对于上述同学的描述是正确的,
另外,对于ArrayList和LinkList是有区别的,这里同学可以这样理解,具体如下:
1、数据结构不一样:ArrayList基于动态数组的数据结构,LinkedList基于链表的数据结构
2、在进行大规模的数据集合时,对于随机访问集合中的元素时,ArrayList的效率优于LinkedList,这是因为对LinkedList进行随机访问时,总会进行一次列表的遍历操作,所以性能比较低。而ArrayList底层是数组,可以直接通过数组下标进行获取,效率比较高。
3、在进行大规模的数据集合时,对于新增和删除操作add和remove,LinedList的效率比较高,因为如果在数组的任意位置插入活着删除元素,必然导致在该位置后的所有元素需要重新排列,因此,其效率相对会比较低。
4、所以在集合中存在大量数据时,如果只是查找对集合中某一位置的元素,建议使用ArrayList,而如果是对指定位置插入或者删除,则需要使用LinkedList。
所以也就是,代码编写后发现集合使用的不准确时,
例如:在集合中存在大量数据时,要进行删除元素,但使用的是ArrayList,后来发现使用的不正确,应该使用LinkedList,那么只要修改一行代码List list = new LinkedList();就可以。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
同学你好,可以这样理解:
首先区分一下ArrayList arr = new ArrayList();和List list = new ArrayList();的区别:
ArrayList arr = new ArrayList();:用当前类作为引用类型,那么可以访问到ArrayList这个类中的所有公用方法。
List list = new ArrayList();:用ArrayList实现的接口List作为引用类型,那么通过list引用可以访问到接口中定义的方法。也就是说ArrayList这个类实现了List接口,除了ArrayList需要实现接口List中声明的方法外,还可以实现额外的一些方法。但list 对象无法调用的List接口以外的方法。
建议使用List list = new ArrayList();的方式,可以让代码更加有扩展性,方便修改的原因,如下:
例如:代码List list = new ArrayList();下面通过list来操作集合。代码编写后发现集合使用的不准确,应该使用LinkedList,那么只要修改一行代码List list = new LinkedList();就可以,这行以后的代码不需要修改,因为List接口保证了调用的都是接口中的方法,而ArrayList与LinkedList都实现了List接口。而如果当时用ArrayList list = new ArrayList()这种形式的话,那么list访问到的就可能是ArrayList里独有的方法而非List接口中的方法。这样替换成LinkedList的时候就有可能需要修改很多的代码。
老师所要描述的是上述的意思,但具体使用ArrayList arr = new ArrayList();或者List list = new ArrayList();还要以具体项目实际的需求而定。但更建议使用List list = new ArrayList();的方式,可以让代码更加有扩展性。
如果我的回答解决了你的疑惑,请采纳!祝学习愉快!
- 参与学习 人
- 提交作业 676 份
- 解答问题 9666 个
本阶段将从前端网页搭建入手,到Java Web基础,前后端结合助你完成Java Web小白的蜕变!
了解课程
恭喜解决一个难题,获得1积分~
来为老师/同学的回答评分吧
0 星