Java List 有一个在一个位置添加多个元素的方法,但我找不到在一个位置删除多个元素的方法

Mar*_*kus 2 java collections list

有,List.addAll(position, collection)但我找不到相应的List.<remove>(position, <range>),无论指定的措辞和方式是什么。中ArrayList,有removeRange(position, positionAfter),但不中List

在许多列表类型中,从列表中删除一个区间的时间复杂度可能为 O(1),而逐个删除元素的时间复杂度为 O(n),因此无法实现这一能力。转换一般List为支持范围删除的类型也将是 O(n),并且会错过机会。

有没有办法以实现可以优化的List方式从一般值中删除一系列值?List

khe*_*ood 10

List#subList

List方法subList返回列表子范围的视图,由相同的数据支持:对子列表所做的更改反映在原始列表中。

因此,您可以使用subListclear从可变列表中删除元素块:

>>> List<Integer> values = new ArrayList<>(List.of(10,20,30,40,50,60));
values ==> [10, 20, 30, 40, 50, 60]
>>> values.subList(3,5).clear()
>>> values
values ==> [10, 20, 30, 60]
Run Code Online (Sandbox Code Playgroud)