Java中List和ArrayList的区别
集合是一组表示为单个单元的单个对象。Java 提供了集合框架,它定义了多个类和接口,以将一组对象表示为一个单元。该框架由 List
接口和 ArrayList
类组成。在本文中,讨论了 List
和 ArrayList
之间的区别。
List
是 Collection
的子接口。它是可以存储重复值的对象的有序集合。由于 List
保留了插入顺序,它允许元素的位置访问和插入。List
接口由 ArrayList
、LinkedList
、Vector
和 Stack
类实现。List
是一个接口,可以通过实现各种类来创建List
的实例。
如果上面所说的听起来令人困惑,那么请参考下图,在实现 List
接口之前,可以在其中轻松发现层次结构和由类组成的 List
接口。
示例代码:
// Importing all utility classes
import java.util.*;
// Main class
public class geek-docsDemo {
// Main driver method
public static void main(String[] args)
{
List<String> al = new ArrayList<String>();
// Adding elements using add() method
// Custom input elements
al.add("geek-docs");
al.add("for");
al.add("Geeks");
// Print and display the elements in ArrayList class object
System.out.println(al);
}
}
运行结果如下:
[geek-docs, for, Geeks]
现在详述 java 中 ArrayList
的下一个概念。ArrayList
基本上是集合框架的一部分,存在于 java.util
包中。它为我们提供了 Java 中的动态数组。此类实现 List
接口。与 List
类似,如果从集合中删除对象,如果集合增长或缩小,则 ArrayList
的大小会自动增加。Java ArrayList
允许随机访问列表。ArrayList
不能用于原始类型,如 int
、char
等。对于这种情况,我们需要一个包装类。下面是一个示例来演示 ArrayList
的实现。
语法:
new ArrayList();
这只是在堆内存中创建了一个新内存。为了访问对象,需要一个引用变量,因为它是面向对象编程中的经验法则。
ArrayList obj = new ArrayList();
到目前为止,只创建了一个对象,但还没有定义 ArrayList
对象中的元素类型。所以像往常一样,我们将使用标识符来传递字符串类型、整数类型、两者或其他一些类型。如下图所示:
ArrayList<Integer> obj = new ArrayList<>();
ArrayList<String> obj = new ArrayList<>();
注意:在将元素添加到
ArrayList
时,如果确实在索引处添加元素 ‘i’ 那么在ArrayList
中,所有元素都会向右移动,在添加之前位于 ‘i’ 的前一个元素现在将位于i + 1
个索引。它不会像在数组中看到的那样被替换。
至此,通过以上对语法的理解,我们已经了解了声明以及如何初始化 List,下面来看看程序中实现相同的内容以更好地理解。
例子:
// Importing all classes from java.util package
import java.util.*;
// Main class
class geek-docsDemo {
// Main driver method
public static void main(String[] args)
{
// Creating an ArrayList of String type Type safe ArrayList
ArrayList<String> al = new ArrayList<String>();
// Adding elements to above object created Custom input elements
al.add("geek-docs");
al.add("for");
al.add("Geeks");
// Print and display the elements of ArrayList
System.out.println(al);
// adding element at index where element is already present
al.add(1, "Hi");
// Print and display the elements of ArrayList
System.out.println(al);
}
}
运行结果如下:
[geek-docs, for, Geeks]
[geek-docs, Hi, for, Geeks]
现在讨论一下Java中两个类之间的区别,上面讨论的是List
与ArrayList
类,它们以下面的表格格式显示如下,以便清楚地理解细线。
Java 中的 List 与 ArrayList 的比较和区别:
List | ArrayList |
---|---|
List 是一个接口 | ArrayList 是一个类 |
List 接口扩展了 Collection 框架 | ArrayList 扩展了 AbstractList 类并实现了 List 接口 |
无法实例化列表。 | ArrayList 可以被实例化。 |
List 接口用于创建与其索引号相关联的元素(对象)列表。 | ArrayList 类用于创建包含对象的动态数组。 |
List 接口创建一个元素的集合,这些元素存储在一个序列中,并使用索引来识别和访问它们。 | ArrayList 创建一个对象数组,该数组可以动态增长。 |