Java Vector subList() 方法
Vector
类是 Java 集合框架中的一个重要组成部分,它实现了动态数组的功能。subList()
方法是 Vector
类提供的一个实用方法,用于从现有 Vector
中提取一部分元素,形成一个新的列表视图。
方法语法:
public List<E> subList(int fromIndex, int toIndex)
参数说明
fromIndex
:子列表的起始索引(包含)toIndex
:子列表的结束索引(不包含)
注意事项
- 索引值必须满足
0 ≤ fromIndex ≤ toIndex ≤ size()
- 如果
fromIndex
和toIndex
相等,返回的子列表为空 - 参数为负数或超出范围会抛出
IndexOutOfBoundsException
返回值特性
subList()
方法返回的是原 Vector
的一个视图(view),而不是独立的副本。这意味着:
视图特性
- 对子列表的修改会直接影响原
Vector
- 原
Vector
的结构性修改(如添加/删除元素)会使子列表失效 - 子列表支持所有列表操作
使用示例
实例
import java.util.Vector;
import java.util.List;
public class VectorSubListExample {
public static void main(String[] args) {
// 创建一个 Vector 并添加元素
Vector<String> colors = new Vector<>();
colors.add("Red");
colors.add("Green");
colors.add("Blue");
colors.add("Yellow");
colors.add("Black");
System.out.println("原始 Vector: " + colors);
// 获取子列表(索引1到3)
List<String> subColors = colors.subList(1, 4);
System.out.println("子列表: " + subColors);
// 修改子列表会影响原 Vector
subColors.set(0, "Light Green");
System.out.println("修改子列表后的 Vector: " + colors);
// 从子列表中移除元素
subColors.remove("Yellow");
System.out.println("移除元素后的 Vector: " + colors);
}
}
import java.util.List;
public class VectorSubListExample {
public static void main(String[] args) {
// 创建一个 Vector 并添加元素
Vector<String> colors = new Vector<>();
colors.add("Red");
colors.add("Green");
colors.add("Blue");
colors.add("Yellow");
colors.add("Black");
System.out.println("原始 Vector: " + colors);
// 获取子列表(索引1到3)
List<String> subColors = colors.subList(1, 4);
System.out.println("子列表: " + subColors);
// 修改子列表会影响原 Vector
subColors.set(0, "Light Green");
System.out.println("修改子列表后的 Vector: " + colors);
// 从子列表中移除元素
subColors.remove("Yellow");
System.out.println("移除元素后的 Vector: " + colors);
}
}
示例输出
原始 Vector: [Red, Green, Blue, Yellow, Black] 子列表: [Green, Blue, Yellow] 修改子列表后的 Vector: [Red, Light Green, Blue, Yellow, Black] 移除元素后的 Vector: [Red, Light Green, Blue, Black]
常见应用场景
1. 处理部分数据
当只需要处理 `Vector` 中的一部分元素时,可以使用 `subList()` 获取特定范围的视图。2. 批量操作
对子列表进行批量操作(如 `clear()`, `addAll()` 等)比操作单个元素更高效。3. 范围检查
可以方便地检查 `Vector` 中某一部分元素是否符合特定条件。注意事项与最佳实践
1. 并发问题
`Vector` 是线程安全的,但子列表操作可能需要额外的同步措施。2. 结构性修改
如果原 `Vector` 被结构性修改(如添加/删除元素),子列表将抛出 `ConcurrentModificationException`。3. 性能考虑
对于频繁的子列表操作,考虑将子列表转换为新的 `ArrayList`: ```java List4. 与 Arrays.asList() 的区别
`subList()` 返回的是动态视图,而 `Arrays.asList()` 返回的是固定大小的列表。总结
Vector
的 subList()
方法是一个强大的工具,可以高效地处理集合的部分视图。理解其视图特性对于正确使用至关重要。在实际开发中,应根据具体需求决定是直接使用子列表视图还是创建独立副本。
点我分享笔记