栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

为什么Java的AbstractList的removeRange()方法受到保护?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

为什么Java的AbstractList的removeRange()方法受到保护?

是的,因为这不是您从外部代码中删除范围的方式。相反,请执行以下操作:

list.subList(start, end).clear();

这实际上

removeRange
是在幕后。†


OP询问为什么

removeRange
不属于
List
公共API。原因在《有效Java第二版》的第40条中进行了描述,在此引用:

有三种缩短简短参数列表的技术。一种是将方法分解为多种方法,每种方法仅需要一部分参数。如果不小心进行,可能会导致方法过多,但也可能通过增加正交性来帮助
减少
方法数量。例如,考虑

java.util.List
接口。它没有提供在子列表中查找元素的第一个索引或最后一个索引的方法,这两个方法都需要三个参数。而是提供了
subList
方法,该方法带有两个参数并返回子列表的
视图
。此方法可以与
indexOf
lastIndexOf
方法结合使用,以产生所需的功能,每个方法都具有一个参数。而且,
subList
方法可以与对实例进行操作的
任何 方法组合以
List
对子列表执行任意计算。所得的API具有非常高的功率重量比。

可以说

removeRange
没有那么多参数,因此可能不适合使用这种方法,但是鉴于有一种方法可以
removeRange
通过调用
subList
,因此没有理由
List
用冗余方法来弄乱接口。


†该

AbstractList.removeRange
文件说:

此方法由

clear
对此列表及其子列表的操作调用。重写此方法以利用列表实现的内部功能可以 大大 改善
clear
此列表及其子列表上操作的性能。

另外,请参见OpenJDK的

AbstractList.clear
和的实现
SubList.removeRange



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/483491.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号