📅  最后修改于: 2023-12-03 15:31:49.817000             🧑  作者: Mango
在Java中,ArrayList是一个动态数组,提供了很多方便的方法来操作元素。其中,subList()方法可以用来获取指定范围的子列表。
ArrayList的subList()方法的定义如下:
public List<E> subList(int fromIndex, int toIndex)
该方法返回一个列表,其中包含从fromIndex(含)到toIndex(不含)索引之间的元素。换句话说,该方法返回的是原列表的一个子列表。
需要注意的是,subList()方法返回的是原列表的一个视图,即它们共享相同的内部数据。因此,对子列表进行的任何修改都会反映在原列表中。
下面我们通过一个示例来了解subList()方法的使用。
import java.util.ArrayList;
import java.util.List;
public class SubListExample {
public static void main(String[] args) {
// 创建一个包含10个元素的列表
List<Integer> list = new ArrayList<>();
for (int i = 1; i <= 10; i++) {
list.add(i);
}
System.out.println("原列表:" + list);
// 获取子列表
List<Integer> sublist = list.subList(3, 7);
System.out.println("子列表:" + sublist);
// 修改子列表
for (int i = 0; i < sublist.size(); i++) {
sublist.set(i, sublist.get(i) * 10);
}
System.out.println("修改后的子列表:" + sublist);
System.out.println("修改后的原列表:" + list);
}
}
输出结果如下:
原列表:[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
子列表:[4, 5, 6, 7]
修改后的子列表:[40, 50, 60, 70]
修改后的原列表:[1, 2, 3, 40, 50, 60, 70, 8, 9, 10]
上述示例创建了一个包含10个元素的列表,然后获取其中从索引3(含)到索引7(不含)的子列表,并对子列表进行了修改。可以看到,修改子列表同样会影响原列表中对应的元素。
subList()方法可以方便地获取ArrayList中指定范围的子列表,并且对子列表的操作会反映在原列表中。但需要注意的是,子列表是原列表的一个视图,因此修改子列表可能会导致ConcurrentModificationException异常的抛出。