`

Java中List和ArrayList的区别

 
阅读更多

List是一个接口,而ListArray是一个类。 
ListArray继承并实现了List。 
所以List不能被构造,但可以向上面那样为List创建一个引用,而ListArray就可以被构造。 
List list;     //正确   list=null; 
List list=new List();    //   是错误的用法
 
List list = new ArrayList();这句创建了一个ArrayList的对象后把上溯到了List。此时它是一个List对象了,有些ArrayList有但是List没有的属性和方法,它就不能再用了。 
而ArrayList list=new ArrayList();创建一对象则保留了ArrayList的所有属性。 
这是一个例子: 
import java.util.*;
public class TestList{ 
public static void main(String[] args){ 
List list = new ArrayList(); 
ArrayList arrayList = new ArrayList();
list.trimToSize(); //错误,没有该方法。
arrayList.trimToSize();   //ArrayList里有该方法。

}
编译一下就知道结果了。
如果这个样子: 
List a=new ArrayList(); 
则a拥有List与ArrayList的所有属性和方法,不会减少 
如果List与ArrayList中有相同的属性(如int i),有相同的方法(如void f()), 
则a.i是调用了List中的i 
a.f()是调用了ArrayList中的f(); 
--------------------------------------------------------------- 
问题的关键: 
为什么要用 List list = new ArrayList() ,而不用 ArrayList alist = new ArrayList()呢? 
问题就在于List有多个实现类,现在你用的是ArrayList,也许哪一天你需要换成其它的实现类,如 LinkedList或者Vector等等,这时你只要改变这一行就行了: 
List list = new LinkedList(); 其它使用了list地方的代码根本不需要改动。 
假设你开始用 ArrayList alist = new ArrayList(), 这下你有的改了,特别是如果你使用了 ArrayList特有的方法和属性。


地区用 List arr = new ArrayList();定义;行业用 ArrayListarr = new ArrayList();定义;则说明,行业里用到了ArrayList的特殊的方法.
另外的例子就是,在类的方法中,如下声明:
private void doMyAction(List list){}
这样这个方法能处理所有实现了List接口的类,一定程度上实现了泛型函数.

如果开发的时候觉得ArrayList,HashMap的性能不能满足你的需要,可以通过实现List,Map(或者Collection)来定制你的自定义类.

转自:http://www.cnblogs.com/aisiteru/articles/1151874.html

分享到:
评论

相关推荐

    经典讲解List和ArrayList和Vector和HashTable和HashMap区别

    在Java编程语言中,集合框架是处理对象数组的重要工具,其中`List`、`ArrayList`、`Vector`、`HashTable`和`HashMap`是五个关键的接口和类,它们各有不同的特性和用途。以下是这些概念的详细解释: 1. **List接口**...

    java基础--list(ArrayList、LinkedList、匿名类).docx

    综上所述,理解并熟练运用List接口、ArrayList和LinkedList的不同特性,以及如何使用匿名类,对于编写高效的Java代码至关重要。在实际开发中,根据具体需求选择合适的数据结构,可以提高程序性能并降低复杂度。同时...

    Java中List、ArrayList、Vector及map、HashTable、HashMap分别的区别.

    在Java中,主要有两种类型的容器:List和Map。List是有序的集合,而Map则是键值对的存储结构。 1. List接口与ArrayList类 List是一个接口,它是Collection接口的一个子接口,规定了元素的顺序和位置。ArrayList是...

    Java中Vector与ArrayList的区别详解

    Java中的ArrayList和Vector都是列表(List)接口的实现类,它们在功能上相似,但在细节上存在一些重要的差异。这两个类都是基于数组实现的,但它们的性能特点、线程安全性和扩容策略有所不同。 1. **扩容策略**: ...

    Java中ArrayList的使用方法以及与vector的对比

    ArrayList 和 Vector 都是 Java 中的动态数组,但是它们之间有一些区别。 * ArrayList 是非线程安全的,而 Vector 是线程安全的。 * ArrayList 的性能比 Vector 高,因为 Vector 需要同步锁机制来保证线程安全。 * ...

    java集合类详解(set list ArrayList等java集合类详述)

    Java 集合类是 Java 语言中的一种基本数据结构,用于存储和操作大量数据。集合类可以分为三大类:Collection、List 和 Set。 Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、remove、contains 等...

    Java容器类List、ArrayList、Vector及map、HashTable应用

    ArrayList是Java中最常用的List实现类,它提供了高效的插入、删除和遍历元素的方法。ArrayList基于数组实现,故插入和删除元素时需要移动数组元素,性能较慢。但是ArrayList的优点是可以随机访问元素,使用索引来...

    用java自己实现的arrayList

    用java自己实现的arrayList,比较详细,有助于初学者理解arrayList的基本概念和基础用法

    Java学生成绩管理系统实例(ArrayList)

    import java.util.ArrayList; import java.util.Iterator; import java.util.Scanner; /** * @Author Ziph * @date 2020/2/19 * @Email mylifes1110@163.com */ public class TestDemo implemen

    java中数组列表ArrayList的使用.doc

    `ArrayList`是Java集合框架中的一个重要组成部分,属于`List`接口的一种实现。它提供了一种动态调整大小的数组,能够有效地存储和操作一系列元素。`ArrayList`的底层实现是基于数组结构,因此它在查询元素时具有较快...

    java获取list中两元素时间差

    List 是一种常见的数据结构,在 Java 中有多种实现,例如 ArrayList、LinkedList 等。List 中的每个元素可以是任何类型,例如字符串、整数、对象等。在本例中,我们使用 ArrayList 来存储时间字段。 时间字段和时间...

    java中数组列表arraylist的使用.docx

    `ArrayList`是Java集合框架中的一个重要组成部分,属于`List`接口的一种实现。它提供了一种动态调整大小的数组,能够有效地解决传统数组大小固定不变的问题。由于其灵活性和高效性,在实际编程中被广泛使用。 #### ...

    java中ArrayList的用法

    ### Java中ArrayList的用法详解 #### 一、概述 `ArrayList`是Java集合框架中的一个动态数组类,它能够存储任意类型的对象,并且在运行时动态调整其大小。这使得`ArrayList`成为处理数量未知的数据集合时的一个非常...

    java中数组列表ArrayList的使用[归类].pdf

    在Java编程语言中,ArrayList是`java.util.ArrayList`类的一个实例,它是`List`接口的实现,基于可变大小的数组。ArrayList提供了一种灵活的方式来存储和操作一系列对象,同时具备动态增长和缩小容量的能力。下面将...

    自定义实现的ArrayList

    自定义实现的ArrayList数据结构,有大量注释以及编写思路,帮助新手用Java语言来实现数据结构

    Java的Array和ArrayList教程by程谱CodeRecipe,适合学过Java入门教程的初学者使用

    在Java编程语言中,Array和ArrayList是两种不同的数据结构,它们都用于存储和管理一组对象。Array是最基本的数组类型,而ArrayList是Java集合框架的一部分,属于动态数组。本教程由程谱CodeRecipe提供,旨在帮助已经...

    Java Methods-java.util.ArrayList.ppt

    Java.util.ArrayList 是 Java 语言中一个非常重要的类,它实现了一个可以动态调整大小的数组列表。下面我们将详细讨论 ArrayList 类的构造方法、方法、特点和使用场景。 一、ArrayList 类的构造方法 ArrayList 类...

    java 中如何从LIST 对象取值

    在Java中,`List`接口是`java.util`包的一部分,它定义了用于存储和操作有序元素集合的方法。`List`的一个主要特点是它可以包含重复元素,并且元素按插入顺序排序。Java标准库提供了几种实现`List`接口的类,如`...

    java中List对象列表实现去重或取出及排序的方法

    在Java中,想要去重List对象列表,首先需要重写实体类的equals和hashCode方法。equals方法用于比较两个对象是否相同,而hashCode方法用于计算对象的哈希码值。 例如,假设我们有一个Student类,想要去重Student对象...

Global site tag (gtag.js) - Google Analytics