惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

大猫的无限游戏
大猫的无限游戏
月光博客
月光博客
博客园 - Franky
博客园 - 三生石上(FineUI控件)
爱范儿
爱范儿
博客园 - 司徒正美
博客园 - 叶小钗
Apple Machine Learning Research
Apple Machine Learning Research
美团技术团队
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
The Cloudflare Blog
B
Blog RSS Feed
阮一峰的网络日志
阮一峰的网络日志
宝玉的分享
宝玉的分享
V
Visual Studio Blog
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
IT之家
IT之家
博客园_首页
S
SegmentFault 最新的问题
A
About on SuperTechFans
Blog — PlanetScale
Blog — PlanetScale
GbyAI
GbyAI
H
Help Net Security
MongoDB | Blog
MongoDB | Blog

博客园 - 黑米

卸载 nodejs 时报错 you must be an administrator to remove this application 的解决 真心觉得,WIN11就是一个笑话 为 centos7 编译 nginx rabbitmqctl set_permissions 报错 invalid command centos7 升级 openssh (用来避坑) 你见过最长的类名是什么 记一次 k8s master 节点被 reset 后恢复的过程 解决 calico/node is not ready: BIRD is not ready: BGP not established with 的问题 @Transactional 和 @DSTransactional 混用可能会造成事务死锁 问题解决:idea 中无法连接 sql server 数据库,报错 [08S01] 驱动程序无法通过使用安全套接字层(SSL)加密与 SQL Server 建立安全连接 用一个脚本定时清理被驱逐的pod java 里的正则表达式 为何实现了 Filter 的类,能自动添加到 filterChain 中? 如何正确填写 sonar.java.binaries 解决 Tasks support was removed in SonarQube 7.6. 的问题 部署了 prometheus, 在 target 中显示 cadvisor 与 nodes 的状态都是 down k8s 部署了 redis 集群,节点重启后,ip 变化导致集群不可用的问题 mvn deploy 到 nexus,报错 Return code is: 400, ReasonPhrase: Bad Request 关于 mybatis 的 @MapperScan 用法心得
java.lang.UnsupportedOperationException: null
黑米 · 2022-07-29 · via 博客园 - 黑米

下面这段代码,

    public void addAllToChild(List<DocTreeVo> list) {
        if (CollectionUtils.isEmpty(list)) {
            return;
        }
        if (childList == null) {
            childList = new ArrayList<>();
        }
        childList.addAll(list);
    }

 在执行的时候报了错误:

java.lang.UnsupportedOperationException: null
    at java.util.AbstractList.add(AbstractList.java:148)
    at java.util.AbstractList.add(AbstractList.java:108)
    at java.util.AbstractCollection.addAll(AbstractCollection.java:344)

一般遇到这个异常的时候,说明 childList 是一个只读的 list 而不是正经的 ArrayList。查了代码,发现在之前进行过这个操作:

    private List<DocTreeVo> keepOnlyColoredNodes(List<DocTreeVo> nodeList) {
        if (CollectionUtils.isEmpty(nodeList)) {
            return ListUtils.EMPTY_LIST;
        }
        List<DocTreeVo> newRootList = nodeList.stream().filter(item -> item.getColor() == 1)
                .collect(Collectors.toList());
        for (DocTreeVo vo : newRootList) {
            vo.setChildList(keepOnlyColoredNodes(vo.getChildList()));
        }
        return newRootList;
    }

问题就出在 nodeList.stream().filter(...).collect(Collectors.toList()) 这里。这里生成的 List 是一个读只的 list, 所以报了上面的错误。