list 接口与实现类arraylist 区别

ArrayList list = new ArrayList(); 
List<String> list = new ArrayList<String>();

第一种形式用当前类作为引用类型,那么可以访问到ArrayList这个类中的所有公用方法。第二种形式,用ArrayList实现的接口List作为引用类型,那么通过list引用可以访问到接口中定义的方法。也就是说ArrayList这个类实现了List接口,除了要必须实现接口List中声明的方法外,还可以实现额外的一些方法。但是,第二种形式就无法调用的List接口以外的方法。
使用上,设计模式中有:“代码尽量依赖于抽象,不依赖于具体”。第一种形式就是依赖具体,第二种形式就是依赖于抽象。因为List是接口。代码依赖于抽象的好处是,代码可以方便替换。例如,代码List list = new ArrayList();下面通过list来操作集合。代码编写后发现集合使用的不准确,应该使用LinkedList,那么只要修改一行代码List list = new LinkedList();就可以,这行以后的代码不需要修改,因为List接口保证了调用的都是接口中的方法,而ArrayList与LinkedList都实现了List接口。而如果当时用ArrayList list = new ArrayList()这种形式的话,那么list访问到的就可能是ArrayList里独有的方法而非List接口中的方法。这样替换成LinkedList的时候就有可能需要修改很多的代码。

原文地址:https://www.cnblogs.com/mike-JP/p/10993088.html

时间: 2024-10-12 16:47:30

list 接口与实现类arraylist 区别的相关文章

java的List接口的实现类 ArrayList,LinkedList,Vector 的区别

Java的List接口有3个实现类,分别是ArrayList.LinkedList.Vector,他们用于存放多个元素,维护元素的次序,而且允许元素重复. 3个具体实现类的区别如下: 1. ArrayList是最常用的List实现类,内部是通过数组实现的,它允许对元素进行快速随机访问.数组的缺点是每个元素之间不能有间隔,当数组大小不满足时需要增加存储能力,就要将已经有数组的数据复制到新的存储空间中.当从ArrayList的中间位置插入或者删除元素时,需要对数组进行复制.移动.代价比较高.因此,它

JavaSE入门学习35:Java集合框架之List接口及其实现类ArrayList和LinkedList

一List接口概述 List接口是Collection接口的子接口,实现List接口的集合类中的元素是有顺序的,而且可以重复,被称为序列. List集合中的元素都对应一个整数型的序列容器中的序号记载其在容器中的位置,可以根据序号存取容器中的元 素.List接口可以精确的控制每个元素的插入位置,或者删除某个位置元素. Java所提供的List集合实现类类有ArrayList实现类.LinkedList实现类.Vector等,我们主要使用的是ArrayList实 现类和LinkedList实现类.

Runnable接口和Thread类的区别

Runnable是接口,Thread是类:Thread类也实现了Runnable接口: 实现Runnable接口可以实现多继承:而Thread只是一个类不能实现多继承: Runnable接口只有一个run方法,所以开启线程如果没有其它要求,实现接口即可: Thread类有很多方法,如果开启线程需要有其它操作可以继承Thread类. Runnable接口和Thread类开启线程,最后都必须用start方法来启动线程. 实现Runnable接口的类: public ThreadR implement

java实现接口与继承类的区别

一个类只能继承一个类,但是可以实现多个接口. 接口里面的方法都是抽象方法,必须要重写所有的方法.接口抽象的方法都要被重写,而继承的类不必这样. 继承一般开发中用的会相比少一点,接口相比就应该会多一点.,接口主要是实现一种松耦合,便于以后的维护.升级,继承主要是提高代码的可重用性,很多东西都可以在父类中做好.子类可以直接用,用一句现在流行的话来说,继承的好处就跟拼爹是一样的. 不同的修饰符修饰(interface),(extends) 在面向对象编程中可以有多继承!但是只支持接口的多继承,不支持'

面向对象接口和类的区别

在OOD(面向对象设计)中,经常会用到抽象类或接口,[注:在C++中,没有接口的概念,只有抽象类:而在Java中两者都存在].而在使用过程中,也许会有不少人认为接口和抽象类差不多,然后就想当然地觉得可以相互完全替换.事实上,虽然他们有很多相似点,但也有很大差异. 1.抽象类与接口的出现条件 在面向对象的概念中,我们知道所有的对象都是通过类来描绘的,但是反过来却不是这样.并不是所有的类都是用来描绘对象的,如果一个类中没有包含足够的信息来描绘一个具体的对象,这样的类就是抽象类.抽象类往往用来表征我们

List接口的实现类与ArrayList相似,区别是Vector是重量级的组件,使用使消耗的资源比较多

List接口的实现类(Vector)(与ArrayList相似,区别是Vector是重量级的组件,使用使消耗的资源比较多.) 结论:在考虑并发的情况下用Vector(保证线程的安全). 在不考虑并发的情况下用ArrayList(不能保证线程的安全). 面试经验(知识点): java.util.stack(stack即为堆栈)的父类为Vector.可是stack的父类是最不应该为Vector的.因为Vector的底层是数组,且Vector有get方法(意味着它可能访问到并不属于最后一个位置元素的其

List 接口以及实现类和相关类源码分析

List 接口以及实现类和相关类源码分析 List接口分析 接口描述 用户可以对列表进行随机的读取(get),插入(add),删除(remove),修改(set),也可批量增加(addAll),删除(removeAll,retainAll),获取(subList). 还有一些判定操作:包含(contains[All]),相等(equals),索引(indexOf,lastIndexOf),大小(size). 还有获取元素类型数组的操作:toArray() 注意事项 两种迭代器Iterator和L

【Java基础】接口Comparable和Comparator的区别和关系

接口Comparable和Comparator的区别和关系 1).两者都是实现集合中元素的比较.排序: 2).Comparable是集合内部定义方法实现排序,Comparator是集合外部实现排序 3).Comparator接口在java.util下,Comparable接口在java.lang下; 通常自定义类加入如List等容器中能够排序,可以实现Comparable接口,在用Collections.sort(List<T> list, Comparator<? super T>

高级程序员必备知识点:接口和抽象类有什么区别?

在Java中可以用接口和抽象类来定义允许有多个实现的类型:不过,接口和抽象类有两个主要的不同: 抽象类允许包含某些方法的实现,接口则不允许:[Java8中已经提供了默认方法] 从设计层面看,为了实现由抽象类定义的类型,类必须定义为抽象类的子类,这就限制了它在类图中的层次,但是接口则没有这种层次的限制: 在实际开发中,我们应该遵循一个原则——接口优于抽象类,主要是由于接口有三个方面的优势: 只要实现新的接口,就可以给现有的类增加新的功能:但是一个类只能继承自一个父类: 接口非常适合用于定义mixi