Java集合框架List接口详解及优化

需积分: 5 0 下载量 52 浏览量 更新于2024-08-06 收藏 17KB DOCX 举报
"这篇文档主要介绍了Java集合框架中的List接口,包括其UML表示,接口关系,以及List接口的特点和实现。文档还讨论了List的遍历方式,删除元素的方法,以及ArrayList的优化和扩容机制,并提到了一些常见的运行时异常。" 在Java集合框架中,List接口是一个重要的部分,它继承自Collection接口,但不是Map接口的父类接口。List接口定义了一组有序的元素,允许元素重复。UML(Unified Modeling Language,统一建模语言)通常用于表示这些接口之间的关系。 List接口的特点包括: 1. 有序性:这意味着插入List的元素会按照特定的顺序进行存储,这与Set接口不同,Set接口不保证元素的顺序。 2. 对象可重复:List中可以包含重复的对象,而Set接口则不允许。 文档中提供了几种遍历List的方法: 1. for循环:通过索引遍历List,如`for(int i=0; i<list.size(); i++) { list.get(i); }` 2. foreach循环:使用Java 8的Stream API,如`list.forEach(System.out::println);` 3. 迭代器:通过`Iterator`接口遍历,包括`next()`方法用于获取下一个元素,`hasNext()`方法检查是否还有更多元素。 删除List元素的常见方式: 1. 正向删除:从前往后删除,需注意避免越界,如`for(int i=0; i<list.size(); i++) { list.remove(0); }` 2. 逆向删除:从后往前删除,避免了越界问题,如`for(int i=list.size()-1; i>=0; i--) { list.remove(i); }` 3. 迭代器删除:安全地遍历并删除元素,如`Iterator iter = list.iterator(); while(iter.hasNext()) { iter.next(); iter.remove(); }` 4. 清空List:使用`list.clear()`方法一次性移除所有元素。 关于ArrayList的优化,文档提到了几个核心概念: 1. 负载因子(扩容比例):默认为1.5,表示每次容量不足时,新的容量将是原容量的1.5倍。 2. 初始化容量:创建ArrayList时可以指定初始容量,如`new ArrayList<>(50)`。 3. 向下取整:当计算新的容量时,会向下取整,确保容量始终为整数。 此外,文档中提到了Java运行时可能出现的一些异常,如: - `NoSuchFieldException`: 当试图访问不存在的字段时抛出。 - `NullPointerException`: 当试图访问或操作null对象时抛出。 - `ClassCastException`: 类型转换异常,当尝试将一个对象强制转换为其非子类类型时抛出。 - `ClassNotFoundException`: 加载类时找不到对应的字节码文件,通常在使用`Class.forName()`或类加载器时发生。 最后,文档中还包含了一个示例,创建了一个包含50个元素的ArrayList,并在每次添加元素后调用`getLen()`方法,但实际代码未提供。这个例子可能用于演示ArrayList在动态扩容时的行为。