例子:三个导包操作
java
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
如何区分
其中涉及到 Java 集合框架的接口(Interface)与实现(Implementation)设计模式。
简单来说:List 是"规则",而 ArrayList 是"具体做法"。
1. List 是接口(Interface)
你把它想象成一份"契约"。它定义了一个列表应该具有哪些行为,比如:
- 必须能存取元素 (
get,set) - 必须能添加元素 (
add) - 必须能移除元素 (
remove)
但 List 本身不能直接运行,因为它只是一个骨架,没有具体的实现逻辑。就像"交通工具"是接口,它规定了交通工具能行驶,但不能直接买一个叫"交通工具"的东西。
2. ArrayList 是类(Class)
它是 List 接口的一个具体的实现类 。它实现了 List 所定义的那些契约,并给出了具体的实现逻辑(比如内部怎么用数组扩容、怎么移动元素等)。
就像"汽车"就是"交通工具"的一种具体实现。
为什么都要导入?
- 导入
java.util.List:是为了在声明变量时使用它(这是 Java 推荐的"面向接口编程"风格)。- 例如:
List<String> list = new ArrayList<>(); - 这样写的好处是:如果有一天你想把
ArrayList换成另一种列表(比如LinkedList),你只需要改右边的new部分,左边的List不需要改。
- 例如:
- 导入
java.util.ArrayList:是因为你需要具体实例化它,即在代码运行时刻去调用new ArrayList<>()这个类来在内存中分配空间。
总结对照表
| 类/接口 | 角色 | 能否实例化(new) | 用途 |
|---|---|---|---|
| List | 接口 | 不能 | 用于定义引用类型,提高代码灵活性 |
| ArrayList | 实现类 | 能 | 用于具体的对象创建,执行实际的逻辑 |
简单说,List 让你知道能干什么,ArrayList 帮你真正地把事情干成了。
至于 java.util.Arrays ,它是一个工具类 (Utility Class),它里面全是静态方法,专门用来辅助操作数组和集合(例如 Arrays.asList 或 Arrays.toString),它不代表"列表"本身。
希望这个解释能帮你理清它们在 Java 程序中的分工!