为什么ArrayList类的removeRange方法不起作用? [复制]

2024-01-09

我正在尝试使用removeRange从中删除某些元素的方法ArrayList。我从这里开始了解这个方法:http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#removeRange(int, int) http://docs.oracle.com/javase/7/docs/api/java/util/ArrayList.html#removeRange%28int,%20int%29

但是当我这样尝试时

ArrayList<String> al = new ArrayList<String>();
al.add("AB");
al.add("BC");
al.add("CD");
al.add("DE");
al.removeRange(1, 3);

我收到这个错误:

Exception in thread "main" java.lang.Error: Unresolved compilation problem: 
The method removeRange(int, int) from the type ArrayList<String> is not visible

为什么我不能使用这个方法?难道我做错了什么?


简短的答案是:使用

al.subList(1, 3).clear();

The removeRange(int, int)方法是protected。您只能从 的子类调用它ArrayList或来自同一包中的类ArrayList. See 控制对类成员的访问 https://docs.oracle.com/javase/tutorial/java/javaOO/accesscontrol.html.

访问的唯一方法是removeRange方法是子类化ArrayList并将该方法公开。例如。

public class RangeRemoveSupport<E> extends ArrayList<E> {

  public void removeRange(int fromIndex, int toIndex) {
    super.removeRange(fromIndex, toIndex);
  }

}

但是你的代码必须使用子类。因此你的代码依赖于这个子类而不仅仅是依赖于List or ArrayList.

同一包内的实用程序类无法访问它。例如。

package java.util; // <- SecurityException

public class RemoveRangeSupport {

    public static void removeRange(ArrayList<?> list, int from, int to){
       list.removeRange(from, to);
    }
}

这将导致SecurityException

java.lang.SecurityException: Prohibited package name: java.util.

因为你不允许定义类java.util出于安全原因。

然而对于其他包来说这可能是一种方法。

我经常使用这种策略进行测试。然后,我将这样的实用程序类与生产代码放在同一个包中,以访问通常不应访问的测试中的一些内部结构。这是一种无需使用框架的简单方法。

EDIT

是否有一个功能可以将 X..Y 范围内的项目替换为可能不同尺寸的新项目?

例如:此列表“0,1,2,3,4”,我将 1..3 替换为“a,b,c,d,e”,将得到:“0,a,b,c, d、e、4"。

List<String> list = new ArrayList<>(Arrays.asList("0", "1", "2", "3", "4"));
List<String> subList = list.subList(1, 4);
subList.clear();
subList.addAll(Arrays.asList("a", "b", "c", "d", "e"));
System.out.println(list);

将输出

[0, a, b, c, d, e, 4]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么ArrayList类的removeRange方法不起作用? [复制] 的相关文章

  • 如何为最终用户方便地启动Java GUI程序

    用户想要从以下位置启动 Java GUI 应用程序Windows 以及一些额外的 JVM 参数 例如 javaw Djava util logging config file logging properties jar MyGUI jar
  • Play框架运行应用程序问题

    每当我尝试运行使用以下命令创建的新 Web 应用程序时 我都会收到以下错误Play http www playframework org Error occurred during initialization of VM Could no
  • 如何找到给定字符串的最长重复子串

    我是java新手 我被分配寻找字符串的最长子字符串 我在网上研究 似乎解决这个问题的好方法是实现后缀树 请告诉我如何做到这一点或者您是否有任何其他解决方案 请记住 这应该是在 Java 知识水平较低的情况下完成的 提前致谢 附 测试仪字符串
  • 给定两个 SSH2 密钥,我如何检查它们是否属于 Java 中的同一密钥对?

    我正在尝试找到一种方法来验证两个 SSH2 密钥 一个私有密钥和一个公共密钥 是否属于同一密钥对 我用过JSch http www jcraft com jsch 用于加载和解析私钥 更新 可以显示如何从私钥 SSH2 RSA 重新生成公钥
  • Android:捕获的图像未显示在图库中(媒体扫描仪意图不起作用)

    我遇到以下问题 我正在开发一个应用程序 用户可以在其中拍照 附加到帖子中 并将图片保存到外部存储中 我希望这张照片也显示在图片库中 并且我正在使用媒体扫描仪意图 但它似乎不起作用 我在编写代码时遵循官方的Android开发人员指南 所以我不
  • 无法展开 RemoteViews - 错误通知

    最近 我收到越来越多的用户收到 RemoteServiceException 错误的报告 我每次给出的堆栈跟踪如下 android app RemoteServiceException Bad notification posted fro
  • Android MediaExtractor seek() 对 MP3 音频文件的准确性

    我在使用 Android 时无法在eek 上获得合理的准确度MediaExtractor 对于某些文件 例如this one http www archive org download emma solo librivox emma 01
  • 多个 Maven 配置文件激活多个 Spring 配置文件

    我想在 Maven 中构建一个环境 在其中我想根据哪些 Maven 配置文件处于活动状态来累积激活多个 spring 配置文件 目前我的 pom xml 的相关部分如下所示
  • 列出jshell中所有活动的方法

    是否有任何命令可以打印当前 jshell 会话中所有新创建的方法 类似的东西 list但仅适用于方法 您正在寻找命令 methods all 它会打印所有方法 包括启动 JShell 时添加的方法 以及失败 被覆盖或删除的方法 对于您声明的
  • 操作错误不会显示在 JSP 上

    我尝试在 Action 类中添加操作错误并将其打印在 JSP 页面上 当发生异常时 它将进入 catch 块并在控制台中打印 插入异常时出错 请联系管理员 在 catch 块中 我添加了它addActionError 我尝试在jsp页面中打
  • Java TestNG 与跨多个测试的数据驱动测试

    我正在电子商务平台中测试一系列商店 每个商店都有一系列属性 我正在考虑对其进行自动化测试 是否有可能有一个数据提供者在整个测试套件中提供数据 而不仅仅是 TestNG 中的测试 我尝试不使用 testNG xml 文件作为机制 因为这些属性
  • 在两个活动之间传输数据[重复]

    这个问题在这里已经有答案了 我正在尝试在两个不同的活动之间发送和接收数据 我在这个网站上看到了一些其他问题 但没有任何问题涉及保留头等舱的状态 例如 如果我想从 A 类发送一个整数 X 到 B 类 然后对整数 X 进行一些操作 然后将其发送
  • getResourceAsStream() 可以找到 jar 文件之外的文件吗?

    我正在开发一个应用程序 该应用程序使用一个加载配置文件的库 InputStream in getClass getResourceAsStream resource 然后我的应用程序打包在一个 jar文件 如果resource是在里面 ja
  • 如何在控制器、服务和存储库模式中使用 DTO

    我正在遵循控制器 服务和存储库模式 我只是想知道 DTO 在哪里出现 控制器应该只接收 DTO 吗 我的理解是您不希望外界了解底层域模型 从领域模型到 DTO 的转换应该发生在控制器层还是服务层 在今天使用 Spring MVC 和交互式
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • Android 中麦克风的后台访问

    是否可以通过 Android 手机上的后台应用程序 服务 持续监控麦克风 我想做的一些想法 不断聆听背景中的声音信号 收到 有趣的 音频信号后 执行一些网络操作 如果前台应用程序需要的话 后台应用程序必须能够智能地放弃对麦克风的访问 除非可
  • 如何从指定日期获取上周五的日期? [复制]

    这个问题在这里已经有答案了 如何找出上一个 上一个 星期五 或指定日期的任何其他日期的日期 public getDateOnDay Date date String dayName 我不会给出答案 先自己尝试一下 但是 也许这些提示可以帮助
  • 获取 JVM 上所有引导类的列表?

    有一种方法叫做findBootstrapClass对于一个类加载器 如果它是引导的 则返回一个类 有没有办法找到类已经加载了 您可以尝试首先通过例如获取引导类加载器呼叫 ClassLoader bootstrapLoader ClassLo
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两

随机推荐

  • 使用networkStream的Image.FromStream

    我正在尝试使用该方法FromStream班级的Image设置使用网络流通过 tcp 连接接收的图像 这是两侧代码 Server TcpListener server new TcpListener IPAddress Any 34567 s
  • 如何使用 javascript、jquery 等创建打印模式

    假设我在几页上有一个打印按钮 每当用户单击时 它将在模式中弹出内容并可以从那里打印 任何想法将不胜感激 我有几页带有打印按钮 当用户单击它时 需要将该内容拉入模式中 然后从该模式中打印 我现在无法为您编写代码 但我可以让您走上正轨 你需要使
  • 为什么我的实体不能与 SpringBoot 一起工作,尽管它可以在没有 SpringBoot 的情况下工作

    请注意 在调查时这个问题 https stackoverflow com questions 52799706 springboot not an entity noredirect 1 comment92527948 52799706我更
  • JavaFX 在多个页面上打印表格视图

    所以 我的问题是我需要打印 tableview 的内容 但其中有太多项目 它只打印其中的前 23 个 我已经在这里找到了一些解决方案 不幸的是它们没有多大帮助 这是我的打印方法 FXML private void printIt Print
  • 如何检测何时发生全屏事件(按 f11 键)[重复]

    这个问题在这里已经有答案了 如何在按下 f11 键时检测全屏事件何时发生 如果发生这种情况 则意味着屏幕处于全屏模式 然后显示警报 不使用键码比较 请给我一种不同的方法来执行此操作 mozilla proposal element requ
  • PyQt QtWebChannel:从 JavaScript 调用 Python 函数

    我正在尝试 使用 Qt 类QWebEngineView and QWebChannel在 HTML 页面和 Python 脚本之间建立简单的连接 目标只是执行foo 当标题 h2 被点击 import sys from PyQt5 QtCo
  • 项目中尚未使用旧版 People API

    我在调用 google 登录 API 时遇到错误 错误是 旧版 People API 之前未在项目 中使用过或已被禁用 但人员 API 已启用 如何解决这个错误 这是我的 google api url 这足以解决我的问题 if empty
  • 如何在 ruby​​ 中清理格式错误的 xml

    我在整理从以下网站返回的格式错误的 XML 代码时遇到问题SEC 的 edgar 数据库 http www sec gov edgar shtml 由于某种原因 他们形成了可怕的 xml 包含任何类型字符串的标签都不是封闭的 它实际上可以在
  • Qt 5 无法部署在 SnowLeopard 上

    我遇到的问题是我的应用程序无法在 10 6 Snow Leopard 上运行 我使用这些参数进行编译 qmake LSPRO pro r spec macx clang CONFIG release CONFIG x86 64 在我的 Pr
  • WatiN:CurrentThread 需要将其 ApartmentState 设置为 ApartmentState.STA 才能自动化 Internet Explorer

    我正在从 C Windows 服务调用 WatiN 当我调用 WatiN 时 它抛出以下异常 CurrentThread 需要将其 ApartmentState 设置为 ApartmentState STA 才能自动化 Internet E
  • 同一线程上的 WebView 方法错误

    我有一个 android 程序 Webview 中的 Java html 我可以从 javascript 调用 Java 代码 但相反的方式停止工作 在 Eclipse 中更新后 这就是我想做的 制作一个网络视图 有效 在 javascri
  • SimpleXML 如何在节点中添加子节点?

    当我打电话时 addChild actor John Doe 这个孩子是最后添加的 有没有办法让这个新孩子成为第一个孩子 正如前面提到的 SimpleXML 不支持这一点 因此您必须使用 DOM 我的建议如下 使用您需要在程序中使用的任何内
  • ios - 从手指移动画笔

    我想在我的 iPad 应用程序中画画 如下图所示 in my app i have placed a image and while moving the finger touch movement i am repeating the i
  • 如何从列表中获取特定项目?

    我有一个案例类别的列表 我想从列表中获取特定项目 I do myList filter id myobject id 0 当filter实际上返回一些东西 但是 当过滤器不返回任何内容时 我会得到索引越界异常 scala gt case c
  • 为什么需要使用 EntryPoint 属性定义 DLLImport

    在经历的同时SWig http www swig org 生成的包装器中 我发现 PInvoke 没有定义任何入口点 但有些地方确实有入口点 那么它们之间有什么区别呢 什么时候需要定义 EntryPoint 什么时候不需要 定义无Entry
  • 按钮图像距离按钮顶部太远;太靠近按钮底部

    我正在 VB NET 2005 中开发 Windows 窗体 我想要一些带有图像的按钮 我说的是普通的 普通的 System Windows Forms Button 我已按照我想要的方式设置了所有内容 但图像在按钮上显示得太低 因此图标的
  • 如何打包不是使用 vagrant up 命令创建的现有虚拟机?

    我安装了 VirtualBox 然后在其中安装了 Ubuntu 12 10 Server Base OS 我在里面安装了各种php包和其他包 我的朋友推荐我使用 Vagrant 这样我就可以轻松地与我的队友分享我的设置 因为我当前的 Vir
  • pygame全屏模式退出

    我正在运行这个小程序 它以全屏模式将图像加载到屏幕上 但是一旦加载 程序将不会通过任何组合键退出 我最终不得不重置计算机才能完成我正在做的任何其他事情 import pygame pygame init WIDTH 1366 HEIGHT
  • 获取由 css column-width 创建的列数[重复]

    这个问题在这里已经有答案了 可能的重复 如何在 Javascript 中获取 css3 多列计数 https stackoverflow com questions 6989306 how to get css3 multi column
  • 为什么ArrayList类的removeRange方法不起作用? [复制]

    这个问题在这里已经有答案了 我正在尝试使用removeRange从中删除某些元素的方法ArrayList 我从这里开始了解这个方法 http docs oracle com javase 7 docs api java util Array