Java中List和ArrayList的区别
2023-09-27 14:26:12 时间
List是一个接口,而ArrayList是一个类。
public interface List<E> extends Collection<E> { int size(); boolean isEmpty(); boolean contains(Object o); Iterator<E> iterator(); Object[] toArray(); <T> T[] toArray(T[] a); boolean add(E e); boolean remove(Object o); boolean containsAll(Collection<?> c); boolean addAll(Collection<? extends E> c); boolean addAll(int index, Collection<? extends E> c); boolean removeAll(Collection<?> c); boolean retainAll(Collection<?> c); ... }
public class ArrayList<E> extends AbstractList<E> implements List<E>, RandomAccess, Cloneable, java.io.Serializable { private int size; public ArrayList(int initialCapacity) { if (initialCapacity > 0) { this.elementData = new Object[initialCapacity]; } else if (initialCapacity == 0) { this.elementData = EMPTY_ELEMENTDATA; } else { throw new IllegalArgumentException("Illegal Capacity: "+ initialCapacity); } } public ArrayList() { this.elementData = DEFAULTCAPACITY_EMPTY_ELEMENTDATA; } ... }ArrayList继承并实现了List。
因为List是一个接口,所以不能被创建实例,但是可以创建引用变量,如:List<Integer> list = null;
List<Integer> list = new List<>();则是错误的用法。
但是我们可以这样使用:
List<Integer> list = new ArrayList<>();
为什么要用
List<Integer> list = new ArrayList<>(); ,而不用 ArrayList<Integer> list = new ArrayList<>();呢?
问题就在于List有多个实现类,现在你用的是ArrayList,也许哪一天你需要换成其它的实现类,如 LinkedList或者Vector等等,这时你只要改变这一行就行了:
List<Integer> list = new LinkedList<>(); 其它使用了list地方的代码根本不需要改动。
相关文章
- Java枚举类
- Java 如何将 List 转换为 MAP
- java 判断一个List是否是另一个List的子集
- Java_集合操作_将元素插入List的指定位置
- Java删除List和Set集合中元素
- java中判断list是否为空的用法
- Java配置文件数据库密码加密
- java工程项目打成普通jar包的配置
- python-day4 列表(相当于java的list集合)的操作
- java中字符串相关操作解析
- java反射(一)
- Java设计模式(24)——行为模式之解释器模式(Interpreter)
- java的dao层如何返回多个list
- java 反射获取字段为List类型中的泛型类型
- 解决 java.net.BindException: Address already in use (Bind failed)
- Java批量更新太慢?多线程+List分段完美解决!
- log4j:ERROR setFile(null,true) call failed.java.io.FileNotFoundException: ..logs2010-1-19.log (系统找不到指定的路径。)
- 【Java AWT 图形界面编程】AWT 常用 Component 组件 ( Frame | Label | Checkbox | List | Choice | TextField )
- 第二十三章:Java编程之列表List
- Java JDK13(Java 13) Text Blocks(文本块)使用及示例代码
- Java 使用Stream()过滤(filter)筛选List<T>列表数据并记录过滤的值日志方法代码
- MySql数据库类型bit等与JAVA中的对应类型【布尔类型怎么存】
- 【netty in action】学习笔记-第一章 了解java NIO(1)
- java List 按指定长度分割