List.addAll(position, collection)个,但我找不到对应的List.<remove>(position, <range>),无论措辞和方式是什么.在ArrayList,有removeRange(position, positionAfter)个,但在List没有.

从列表中删除间隔可能是O(1)在许多列表类型中,逐个删除元素可能是O(N),并且错过了这种能力.将一般的List转换为支持范围移除的类型也将是O(N)并且错过机会.

有没有什么方法可以从一般的List中删除一系列值,使List实现可以为此进行优化?

推荐答案

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]

Java相关问答推荐

Android视图覆盖不阻止点击它后面的控件

找到允许的最大底片

如何在Javascript中设置文本区域圆角的样式

存根基类的受保护方法

名称冲突具有相同的擦除

这是什么Java构造`(InputStream Is)->;()->;{}`

暂停计时器

用OSQL创建索引

类型集合的Jackson JsonNode:类型引用的对象读取器应该是Singleton吗?

如何只修改父类ChroniclerView位置0处的第一个嵌套ChroniclerView(child)元素?

Sack()步骤中的合并运算符未按预期工作

Java堆中的许多java.time.ZoneRegion实例.ZoneId实例不应该被缓存吗?

Java 21中泛型的不兼容更改

为什么创建Java动态代理需要接口参数

在权限列表中找不到我的应用程序

Java类型推断:为什么要编译它?

整数->;双取消框,但双->;int不';t开箱.为什么?

关于正则表达式的一个特定问题,该问题与固定宽度负向后看有关

如何使用 Java 替换位于特定标记内的 XML 标记的 CDATA 内的值

如何解释泛型类层次 struct 中子类的返回值类型和参数定义?