当removeAll()时TreeSet中出现NullPointerException

2023-12-29

从文档Collection.removeAll() https://docs.oracle.com/javase/7/docs/api/java/util/Collection.html#removeAll(java.util.Collection):

Throws: NullPointerException- 如果该集合包含一个或多个 null 元素且指定集合不支持 null 元素(可选),或者指定的集合是否为 null。

但下面的代码仍然抛出一个NullPointerException https://docs.oracle.com/javase/7/docs/api/java/lang/NullPointerException.html:

public class TestSet { 
    public static void main(String[] args) { 
        Set set1 = new TreeSet(); 
        set1.add("A"); 
        set1.add("B"); 
        Set set2 = new HashSet(); 
        set2.add(null); 
        set1.removeAll(set2); 
    } 
} 

有人可以帮助我理解这种行为吗?


我猜 Javadoc 的条件是什么时候NullPointerException可能会被抛出removeAll不准确。

TreeSet's removeAll依靠AbstractSet的实施。该实现迭代两个集合中较小集合的所有元素。

在你的代码片段中,这就是HashSet,其中包含null元素。所以removeAll迭代HashSet并尝试删除它找到的每个元素TreeSet.

然而,remove of TreeSet抛出一个NullPointerException当尝试删除一个null集合中的元素uses natural ordering, or its comparator does not permit null elements.

总而言之,NullPointerException是由TreeSet's remove(),在 Javadoc 中对此进行了解释remove():

Throws:

ClassCastException - 如果指定的对象无法与当前在此集合中的元素进行比较

空指针异常 -如果指定的元素为 null 并且该集合使用自然排序,或其比较器不允许 null 元素

有趣的是,向HashSet将消除NullPointerException,因为在这种情况下两者Sets 将具有相同的大小,并且执行removeAll()会迭代的元素TreeSet.

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

当removeAll()时TreeSet中出现NullPointerException 的相关文章

  • 从线程设置 imageView

    我正在使用朋友下载图片并设置在ImageView 但是 我收到此错误 只有创建视图层次结构的原始线程才能触摸其视图 这是我的代码 ImageView profilePicture Thread thread new Thread Overr
  • Gson - 使用两个不同的键读取值

    在我的 Android 项目中 我有两种类型的响应除了两个键之外 响应是相同的 回应1 fullName William Sherlock Scott Holmes address 221B Baker Street London Engl
  • Hibernate UserType 和定义的长度

    我有一个休眠用户类型 如下所示 public class UUIDHibernateType implements UserType private static final int SQL TYPES new int Types CHAR
  • 使 ServletContextListener 能够感知 Spring

    我正在将 Spring 插入现有的 Java EE Web 应用程序 我的 web xml 中有以下几行
  • Java 中 OWLOntology 到 Jena 模型的转换

    我需要将数据从 OWLOntology 对象 OWL api 的一部分 转换为模型对象 Jena Api 的一部分 我的Java程序应该能够加载owl文件并将其内容发送到fuseki服务器 根据我读到的内容 只有使用 Jena Api 才能
  • Java 中有没有类似 cmake 的工具?

    迄今为止我所知道的最好的Java构建工具似乎是maven 但它仍然没有提供像 cmake 那么多的灵活性 有人知道 java 的类似 cmake 的工具吗 只为您的兴趣 我在 CMake 中开发了 Java 支持 它从 2 8 6 版本开始
  • 如何在netbeans(Java Swing)中查看同一JFrame中包含许多子jPanel的另一个jPanel

    我想通过按钮事件操作显示另一个 jPanel 例如 private void jButtonMouseClicked MouseEvent e getContentPane removeAll update getGraphics code
  • javax.net.ssl.SSLHandshakeException

    最近 我们的一个 Java 应用程序遇到了问题 该应用程序试图运行受 SSL 保护的 amazone 负载均衡器 Web 服务 该服务的证书由 GoDaddy 签名 我们没有将公钥证书链文件 PEM 编码 的内容复制并粘贴到 证书链 框中
  • 使用@Depends注释StatelessBean到HornetQ-JMS队列

    我在文件中有一个 JMS 队列的简单定义my hornetq jms xml
  • 在 java GUI 中更新 JTree

    我在 GUI 中使用了 JTree 并将其添加到 JFrame 中 当我想更新它并更改程序另一部分中的节点时 当程序运行时 作为执行的操作 我尝试添加新节点或删除节点 但我的界面没有改变 请给我建议一个解决方案 regards 除了 ins
  • 输入流的问题

    以下是我将在我的项目中使用的代码片段的一部分 public String fetchFromStream try int charVal StringBuffer sb new StringBuffer while charVal inpu
  • 使用 MVP 模式

    我有一个用 MVC 模式制作的 Web 应用程序 但是我正在尝试适应 MVP 模式 我正在使用 GWTPlatform 库 我已经将其中的一些代码迁移到了Presenter和View 然而 我还没有看到任何全面的材料来解释如何实际处理Mod
  • Elasticsearch:在 java.lang.OutOfMemoryError:Java 堆空间后重新启动节点

    我的一个 ES 节点失败了 因为java lang OutOfMemoryError Java heap space错误 这是日志中的完整堆栈跟踪 2020 09 18T04 25 04 215 WARN o e a b Transport
  • Java Socket/Serversocket WAN 连接

    我试图用我的计算机创建一个服务器 以便他们的计算机上的客户端可以与我的计算机连接和通信 我在端口 31350 上创建了服务器 客户端尝试通过我的路由器的 IP 地址进行连接 但只有当我在套接字创建参数中有 localhost 或我的计算机名
  • Java:有没有更简单的方法从字符串中解析数组元素?

    在应用程序中有一个以下格式的字符串 String elements 11 john 23 Adam 88 Angie 表示字符串中有更多元素 根据给定的字符串 我必须为名称 ID 11 23 88 创建一个 ArrayList 为名称 jo
  • 使用 Hibernate Criteria API 返回每组的第一行

    我是 Hibernate 新手 我正在尝试编写一个条件查询来返回给定日期员工的最新状态 id Status status date 1 Active 1 10 2017 2 Active 1 10 2017 1 Inactive 5 10
  • 使用泛型类型实例化抽象类的对象

    我正在创建一个具有泛型类型的函数 并且该泛型类型是我需要实例化的抽象类型 这段代码会更清楚地解释它 public
  • 如何映射“根”Servlet 以便其他脚本仍然可以运行?

    我正在尝试构建一个调用 JSP 页面的 Servlet 类似于以下内容 public void doGet HttpServletRequest req HttpServletResponse resp throws IOException
  • 注释非法 Unicode 序列

    我曾经在一个处理 unicode 处理的 Java 应用程序上工作 像往常一样 我首先编写一些代码并测试它 然后注释掉工作代码并添加一些新行 这个过程一直持续到我找到解决方案 我遇到的确切问题是注释掉非法的 Unicode 字符串 有些 u
  • JBoss Weld + java.lang.OutOfMemoryError:永久代空间

    我刚刚切换到 Weld 以利用 CDI JSF 2 Beans 对话范围 这是我的 Maven 依赖项

随机推荐

  • 在进行另一次检查之前如何检查变量不为空?

    我有这个代码 if App selectedPhrases null App selectedPhrases Count 0 有没有办法可以使用 来简化它 运算符检查 null 而不是使用 连接进行两个不同的检查 您可以使用 null 条件
  • 使用 Hibernate 将两个或多个应用程序连接到同一个数据库

    我计划构建一个桌面应用程序 它将使用 Hibernate 和 MySQL 作为其数据源 我想在多台机器上执行桌面应用程序 但我希望它们都读 写同一个 MySQL 数据库 这可能吗 我担心的是当两个应用程序尝试访问 修改相同信息时的并发问题
  • 如果我没有足够的内存,spark 会做什么?

    我是 Spark 新手 我发现文档说 Spark 会将数据加载到内存中以使迭代算法更快 但是如果我有 10GB 的日志文件而只有 2GB 内存怎么办 Spark 会像往常一样将日志文件加载到内存中吗 我认为这个问题在 Spark 网站的 F
  • 使用 Graphql 时填充猫鼬模式中的“Ref”

    我正在使用 Graphql 然后遇到需要填充的情况 但我不知道如何执行它 这是我的预订架构 const mongoose require mongoose const Schema mongoose Schema const booking
  • 如何从 github 安装一个 fork 作为依赖项?

    我已经创建了某个存储库的分支 我需要使用该分支作为我的项目的依赖项 现在我这样做 npm install angular save 如何更改此设置以安装分叉 来自安装命令的 NPM 文档 https docs npmjs com cli i
  • PHP + Javascript - 读/写 Cookie

    是否可以使用 javascript 创建 cookie 然后使用 PHP 读取它 那么反过来呢 是的 您可以在任何一方设置和读取 cookie 在 javascript 方面 您需要解析document cookie变量 但是有很多库可以做
  • 使用 jquery 更改链接中的 html 文本

    这里有一个简单的问题 有没有办法更改文本 单击此处 a href nothing click here a 在这个链接中 Richard 你必须使用jquery的text 函数 https api jquery com text text
  • 应为使用 GetDIBits 函数从 HBITMAP 接收的 DIB 数据分配多少内存?

    应为使用 GetDIBits 函数从 HBITMAP 接收的 DIB 数据分配多少内存 MSDN中对GetDIBits函数的描述如下 int GetDIBits in HDC hdc in HBITMAP hbmp in UINT uSta
  • 如何使用 jQuery 选择文本节点?

    我想获取一个元素的所有后代文本节点 作为 jQuery 集合 最好的方法是什么 jQuery 没有为此提供方便的函数 你需要结合contents 它将只给出子节点 但包括文本节点 其中find 它给出所有后代元素 但不给出文本节点 这是我想
  • $(document).keydown 不起作用

    Edit 感谢大家的帮助 但我将我的问题跟踪为代替 请投票关闭 知道为什么吗 function document keydown function evt alert Hello 不管用 我在用Firefox 3 6 13在 Ubuntu
  • 什么时候需要 pygame.init() ?

    我正在学习 pygame 在绝大多数教程中据说应该运行pygame init 在做任何事情之前 我正在做一个特定的教程并像一个人那样输入代码 并注意到在一个又一个的示例中没有pygame init 并且没有任何模块的其他显式初始化 例如 以
  • 使用角度过滤来过滤角度材料表中的特定列?

    我在用垫子表 https run stackblitz com api angular v1 file app 2Ftable filtering example ts 它有一个过滤器 工作正常 针对以下数据进行过滤 所有列 const E
  • 每个用户表都应该有聚集索引吗?

    最近 我在数据库中发现了几个没有定义聚集索引的表 但定义了非聚集索引 因此它们位于 HEAP 上 经过分析 我发现 select 语句对非聚集索引中定义的列使用过滤器 这些表上没有聚集索引会影响性能吗 很难比 SQL Server MVP
  • Matplotlib event_handling 线选择器

    This example http matplotlib org examples event handling legend picking html可以单击图例从而更改绘图 我想做类似的事情 但不是通过单击图例 而是通过单击图中的线 我
  • Android 检查 SharedPreferences 的值类型

    我有一些键值对SharedPreferences 有整数 浮点数 字符串等 有没有办法检查给定的键是否属于特定类型 EDIT 我研究了文档和可用的方法 可悲的是 在我看来 我需要使其成为一种 肮脏 的方式 只需尝试每个 get 方法 直到我
  • Autofac 无法解析模块中的依赖关系

    我是 AutoFac 的新手 我认为应该是一个简单的场景 var builder new ContainerBuilder builder Register c gt new EventLogLogger As
  • Selenium WebDriver JS - 显式等待

    我正在使用 selenium webdriverjs 我想等待显示某个元素 我已为其创建了显式等待 如下所示 它工作得很好 var displayed false driver wait function driver findElemen
  • 圆形 LinearGradient 上的 ContextMenu 在 SwiftUI 中产生锐边

    我有以下观点 struct ContentView View var body some View LinearGradient gradient Gradient colors blue red startPoint topTrailin
  • Python + BeautifulSoup:如何从基于文本的 HTML 中获取包装器?

    想要获得关键文本的包装 例如 在 HTML 中 div class target chicken div div class not target apple div 并根据文本 鸡 想要返回 div class target chicke
  • 当removeAll()时TreeSet中出现NullPointerException

    从文档Collection removeAll https docs oracle com javase 7 docs api java util Collection html removeAll java util Collection