openjdk16下,list.stream().toList()调用removeAll()报错

今天写业务时有一个list.removeAll(list1)操作,两个list都是有值的,但是运行到此处就会报错,然后就打断点调试,发现是两个list类型不同导致的异常抛出,前者是openjdk16的语法糖stream().toList()返回的不可变类型的list,后者是ArrayList,在此记录下来

异常信息:

Exception in thread "main" java.lang.UnsupportedOperationException
    at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142)
    at java.base/java.util.ImmutableCollections$AbstractImmutableCollection.removeAll(ImmutableCollections.java:151)

 代码复现:


import java.util.ArrayList;
import java.util.List;

public class Test {
    public static void main(String[] args) {
        List<String> list = new ArrayList<>();
        list.add("1");
        list.add("2");
        list.add("3");
        list.add("4");
        // 转换
        list=list.stream().toList();

        // 被删除的元素
        List<String> listRemove = new ArrayList<>();
        listRemove.add("1");
        listRemove.add("2");
        listRemove.add("3");
        list.removeAll(listRemove);
        System.out.println(list);
    }
}

运行结果:

Exception in thread "main" java.lang.UnsupportedOperationException
	at java.base/java.util.ImmutableCollections.uoe(ImmutableCollections.java:142)
	at java.base/java.util.ImmutableCollections$AbstractImmutableCollection.removeAll(ImmutableCollections.java:151)

原因:

stream().toList()方法返回一个不可变的list,无论任何对这个list修改的方法都会抛出异常

解决方案:

使用原始的流处理方法 :stream().collect(Collectors.toList()),返回一个可变的list

 

 

 

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
openjdk1.8.0.372是OpenJDK的一个特定版本。OpenJDK是一个开源的Java开发工具包,它提供了一组用于开发和运行Java应用程序的工具和库。与Oracle JDK相比,OpenJDK是一个免费的替代品,可以在各种操作系统上使用。 在你提到的情况中,你遇到了一个异常:“java.security.InvalidKeyException: Illegal key size”。这个异常通常是由于JDK版本不支持所使用的密钥长度引起的。在某些情况下,某些JDK版本对密钥长度有限制,如果使用的密钥长度超过了限制,就会抛出这个异常。 如果你遇到了这个异常,有几种解决方法可以尝试: 1. 更新JDK版本:首先,你可以尝试升级你的JDK版本到最新的稳定版本。新版本的JDK通常修复了一些旧版本中存在的问题,并提供了更好的兼容性和安全性。 2. 安装无限制的加密策略文件:如果更新JDK版本不可行或者不起作用,你可以尝试安装无限制的加密策略文件。这些策略文件可以解除密钥长度的限制,使得你可以使用更长的密钥长度。具体的安装步骤可以参考引用中提供的链接。 3. 切换到其他JDK版本:如果以上两种方法都不起作用,你可以尝试切换到其他的JDK版本,看看是否能解决这个问题。有时候不同的JDK版本对加密算法的支持程度不同,可能会对你的问题有所帮助。 总结来说,openjdk1.8.0.372是OpenJDK的一个特定版本,你遇到的异常可能与密钥长度有关。你可以尝试更新JDK版本、安装无限制的加密策略文件或切换到其他JDK版本来解决这个问题。希望这些方法能对你有帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值