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)来定制你的自定义类.
相关推荐
在Java编程语言中,集合框架是处理对象数组的重要工具,其中`List`、`ArrayList`、`Vector`、`HashTable`和`HashMap`是五个关键的接口和类,它们各有不同的特性和用途。以下是这些概念的详细解释: 1. **List接口**...
综上所述,理解并熟练运用List接口、ArrayList和LinkedList的不同特性,以及如何使用匿名类,对于编写高效的Java代码至关重要。在实际开发中,根据具体需求选择合适的数据结构,可以提高程序性能并降低复杂度。同时...
在Java中,主要有两种类型的容器:List和Map。List是有序的集合,而Map则是键值对的存储结构。 1. List接口与ArrayList类 List是一个接口,它是Collection接口的一个子接口,规定了元素的顺序和位置。ArrayList是...
Java中的ArrayList和Vector都是列表(List)接口的实现类,它们在功能上相似,但在细节上存在一些重要的差异。这两个类都是基于数组实现的,但它们的性能特点、线程安全性和扩容策略有所不同。 1. **扩容策略**: ...
ArrayList 和 Vector 都是 Java 中的动态数组,但是它们之间有一些区别。 * ArrayList 是非线程安全的,而 Vector 是线程安全的。 * ArrayList 的性能比 Vector 高,因为 Vector 需要同步锁机制来保证线程安全。 * ...
Java 集合类是 Java 语言中的一种基本数据结构,用于存储和操作大量数据。集合类可以分为三大类:Collection、List 和 Set。 Collection 是集合框架中的根接口,提供了基本的集合操作,如 add、remove、contains 等...
ArrayList是Java中最常用的List实现类,它提供了高效的插入、删除和遍历元素的方法。ArrayList基于数组实现,故插入和删除元素时需要移动数组元素,性能较慢。但是ArrayList的优点是可以随机访问元素,使用索引来...
用java自己实现的arrayList,比较详细,有助于初学者理解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
`ArrayList`是Java集合框架中的一个重要组成部分,属于`List`接口的一种实现。它提供了一种动态调整大小的数组,能够有效地存储和操作一系列元素。`ArrayList`的底层实现是基于数组结构,因此它在查询元素时具有较快...
List 是一种常见的数据结构,在 Java 中有多种实现,例如 ArrayList、LinkedList 等。List 中的每个元素可以是任何类型,例如字符串、整数、对象等。在本例中,我们使用 ArrayList 来存储时间字段。 时间字段和时间...
`ArrayList`是Java集合框架中的一个重要组成部分,属于`List`接口的一种实现。它提供了一种动态调整大小的数组,能够有效地解决传统数组大小固定不变的问题。由于其灵活性和高效性,在实际编程中被广泛使用。 #### ...
### Java中ArrayList的用法详解 #### 一、概述 `ArrayList`是Java集合框架中的一个动态数组类,它能够存储任意类型的对象,并且在运行时动态调整其大小。这使得`ArrayList`成为处理数量未知的数据集合时的一个非常...
在Java编程语言中,ArrayList是`java.util.ArrayList`类的一个实例,它是`List`接口的实现,基于可变大小的数组。ArrayList提供了一种灵活的方式来存储和操作一系列对象,同时具备动态增长和缩小容量的能力。下面将...
自定义实现的ArrayList数据结构,有大量注释以及编写思路,帮助新手用Java语言来实现数据结构
在Java编程语言中,Array和ArrayList是两种不同的数据结构,它们都用于存储和管理一组对象。Array是最基本的数组类型,而ArrayList是Java集合框架的一部分,属于动态数组。本教程由程谱CodeRecipe提供,旨在帮助已经...
Java.util.ArrayList 是 Java 语言中一个非常重要的类,它实现了一个可以动态调整大小的数组列表。下面我们将详细讨论 ArrayList 类的构造方法、方法、特点和使用场景。 一、ArrayList 类的构造方法 ArrayList 类...
在Java中,`List`接口是`java.util`包的一部分,它定义了用于存储和操作有序元素集合的方法。`List`的一个主要特点是它可以包含重复元素,并且元素按插入顺序排序。Java标准库提供了几种实现`List`接口的类,如`...
在Java中,想要去重List对象列表,首先需要重写实体类的equals和hashCode方法。equals方法用于比较两个对象是否相同,而hashCode方法用于计算对象的哈希码值。 例如,假设我们有一个Student类,想要去重Student对象...