📅  最后修改于: 2023-12-03 14:42:43.384000             🧑  作者: Mango
在 Java 中,AbstractList
是一个抽象类,它实现了 List
接口。AbstractList
提供了许多便利的操作元素的方法,其中之一就是 subList()
操作,它可以返回一个部分列表,将原列表截取出一部分。
subList()
方法的声明public List<E> subList(int fromIndex, int toIndex) {
// ...
}
返回一个具有指定范围的列表视图
import java.util.*;
public class Main {
public static void main(String[] args) {
ArrayList<String> myList = new ArrayList<String>();
myList.add("A");
myList.add("B");
myList.add("C");
myList.add("D");
myList.add("E");
myList.add("F");
// 返回从 2(包含)到 5(不包含)的子列表
List<String> subList = myList.subList(2, 5);
System.out.println("原列表: " + myList);
System.out.println("子列表: " + subList);
// 在子列表中添加一个元素
subList.add("G");
System.out.println("原列表: " + myList);
System.out.println("子列表: " + subList);
// 在原列表中添加一个元素
myList.add("H");
System.out.println("原列表: " + myList);
System.out.println("子列表: " + subList);
}
}
运行结果:
原列表: [A, B, C, D, E, F]
子列表: [C, D, E]
原列表: [A, B, C, D, E, F, G]
子列表: [C, D, E, G]
原列表: [A, B, C, D, E, F, G, H]
子列表: [C, D, E, G]
在上面的示例中,我们新建了一个 ArrayList
,并向其中添加了一些元素。然后我们使用 subList()
方法从原列表中截取了一部分,并对子列表进行了一些操作,包括向其中添加元素和删除元素。
需要注意的是,对子列表的操作会同时改变原列表。也就是说,当我们对子列表中的元素进行操作时,会同时对原列表进行同样的操作。
再次强调:subList()
方法返回的是原列表的子列表,它们是共享一段数组的,因此对子列表的操作同样会影响到原列表。如果你将子列表中的元素全部删除了,那么原列表也将为空。因此,当你使用 subList() 时需要非常慎重,避免对原列表造成不良影响。