集合是一组表示为单个单元的单独对象。 Java提供了一个集合框架它定义了多个类和接口来将一组对象表示为一个单元。该框架由 List 接口以及 ArrayList 类组成。
在本文中,讨论了 List 和 ArrayList 之间的区别。
List Interface是个孩子接口的集合。它是一个有序的对象集合,其中可以存储重复的值。由于 List 保留插入顺序,因此它允许位置访问和插入元素。列表接口的实现是类的ArrayList,LinkedList,Vector, 和Stack。 List是一个接口,List的实例可以通过实现各种类来创建。
极客如果上面所说的听起来令人困惑,那么请参考下图,您可以在实现 List 接口之前轻松找到由类组成的层次结构和 List 接口。
示例
Java
// Java program to demonstrate the
// working of a List with ArrayList
// class
// Importing all utility classes
import java.util.*;
// Main class
public class GFG {
// Main driver method
public static void main(String[] args)
{
// Creating an object of List class
// Declaring an object of String type with
// reference to ArrayList class
// Type safe list
List<String> al = new ArrayList<String>();
// Adding elements using add() method
// Custom input elements
al.add("Geeks");
al.add("for");
al.add("Geeks");
// Print and display the elements in
// ArrayList class object
System.out.println(al);
}
}
[Geeks, for, Geeks]
现在详细讨论java中ArrayList的下一个概念。因此ArrayList 本质上是集合框架的一部分,并且存在于java.util 包中。它为我们提供了Java中的动态数组。该类实现了List接口。与列表类似,如果集合增大,ArrayList 的大小会自动增加;如果从集合中删除对象,则 ArrayList 的大小会自动减小。 Java ArrayList 允许我们随机访问该列表。 ArrayList 不能用于原始类型,如 int、char 等。我们需要一个包装类对于此类情况。下面通过一个例子来演示ArrayList的实现。
用法:
new ArrayList();
这只是在堆内存中创建了一个新内存。为了访问对象,我们需要一个引用变量,因为这是面向对象编程中的经验法则。
ArrayList obj = new ArrayList();
到目前为止,我们只创建了一个对象,但尚未定义 ArrayList 对象中的元素类型。因此,像往常一样,我们将使用标识符来传递字符串类型、整数类型、两者或其他一些类型。如下图所示。
ArrayList<Integer> obj = new ArrayList<>();
ArrayList<String> obj = new ArrayList<>();
Note: While adding the elements to ArrayList if we do add element at an index say ‘i’th then in our ArrayList all the elements shifts towards right where the previous element which was at ‘i’ th before addition will now be at ‘i+1’ th index. It will not be replaces just unlikely as we do see in arrays.
现在,我们已经通过上述语法理解了解了声明以及如何初始化 List,现在让我们在程序中实现相同的内容以更好地理解。
例子:
Java
// Java Program to Demonstrate
// Working of an ArrayList class
// Importing all classes from java.util package
import java.util.*;
// Main class
class GFG {
// 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("Geeks");
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);
}
}
[Geeks, for, Geeks] [Geeks, Hi, for, Geeks]
现在让我们讨论上面讨论的java中两个类之间的区别,即List与ArrayList类,它们以表格格式显示如下,以便清楚thin-line理解。
Java 中的列表与ArrayList
List | ArrayList |
---|---|
列表是一个接口 | ArrayList 是一个类 |
List 接口扩展了 Collection 框架 | ArrayList 扩展 AbstractList 类并实现 List 接口 |
列表无法实例化。 | ArrayList可以实例化。 |
列表接口用于创建与其索引号关联的元素(对象)列表。 | ArrayList 类用于创建包含对象的动态数组。 |
列表接口创建按顺序存储的元素集合,并使用索引来识别和访问它们。 | ArrayList 创建一个对象数组,该数组可以动态增长。 |
相关用法
- Java List和Set的区别用法及代码示例
- Java List sort()用法及代码示例
- Java List spliterator()用法及代码示例
- Java List toArray()用法及代码示例
- Java ListIterator add()用法及代码示例
- Java ListIterator hasNext()用法及代码示例
- Java ListIterator hasPrevious()用法及代码示例
- Java ListIterator next()用法及代码示例
- Java ListIterator nextIndex()用法及代码示例
- Java ListIterator previous()用法及代码示例
- Java ListIterator previousIndex()用法及代码示例
- Java ListIterator remove()用法及代码示例
- Java ListIterator set()用法及代码示例
- Java ListResourceBundle getContents()用法及代码示例
- Java ListResourceBundle getKeys()用法及代码示例
- Java ListResourceBundle handleGetObject()用法及代码示例
- Java ListResourceBundle handleKeySet()用法及代码示例
- Java List add()用法及代码示例
- Java List addAll()用法及代码示例
- Java List clear()用法及代码示例
- Java List contains()用法及代码示例
- Java List containsAll()用法及代码示例
- Java List equals()用法及代码示例
- Java List get()用法及代码示例
- Java List hashCode()用法及代码示例
注:本文由纯净天空筛选整理自KaashyapMSK大神的英文原创作品 Difference between List and ArrayList in Java。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。