八毛八&& 2022-09-03 12:33 采纳率: 61.5%
浏览 21
已结题

Java集合里面的retainAll

java集合
为什么这样造的集合可以用retainAll()

img


这样的会报错

img

  • 写回答

2条回答 默认 最新

  • a5156520 2022-09-03 13:32
    关注

    asList返回的对象是Arrays的一个内部类,并没有实现集合修改,因此调用其add/remove/clear等方法是会报错的。Arrays.asList体现的是适配器模式,其后台数据仍是数组(引用自参考链接),而retainAll应该是会调用其remove的方法,所以会报错(个人理解),可以通过java8新特性的stream流来解决(引用自参考链接),测试代码如下:
    参考链接:
    Exception in thread “main“ java.lang.UnsupportedOperationException_但求上进的博客-CSDN博客

    import java.util.ArrayList;
    import java.util.Arrays;
    import java.util.Collection;
    import java.util.stream.Collectors;
    
    public class CollectionretailAllTest {
    
        public static void main(String[] args) {
            // TODO Auto-generated method stub
            //test3();
            
            test4();
        }
    
        public static void test3() {
            Collection coll = new ArrayList();
            coll.add(3);
            coll.add("new");
            Collection coll1 = Arrays.asList(3,5,8);
            
            System.out.println("交集是:");
            coll.retainAll(coll1);
            System.out.println(coll);
            
        }
        public static void test4() {
            
            Object[] array = new Object[] {1,2,3,4};
            
            Collection coll =  Arrays.stream(array).collect(Collectors.toList());
            
            //Collection coll = Arrays.asList(1,2,3,4);
            Collection coll1 = Arrays.asList(3,5,8);
            
            System.out.println("交集是:");
            coll.retainAll(coll1);
            System.out.println(coll);
            
        }
    }
    
    

    img

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(1条)

报告相同问题?

问题事件

  • 系统已结题 9月11日
  • 已采纳回答 9月3日
  • 创建了问题 9月3日

悬赏问题

  • ¥15 centos7.9 IPv6端口telnet和端口监控问题
  • ¥120 计算机网络的新校区组网设计
  • ¥20 完全没有学习过GAN,看了CSDN的一篇文章,里面有代码但是完全不知道如何操作
  • ¥15 使用ue5插件narrative时如何切换关卡也保存叙事任务记录
  • ¥20 海浪数据 南海地区海况数据,波浪数据
  • ¥20 软件测试决策法疑问求解答
  • ¥15 win11 23H2删除推荐的项目,支持注册表等
  • ¥15 matlab 用yalmip搭建模型,cplex求解,线性化处理的方法
  • ¥15 qt6.6.3 基于百度云的语音识别 不会改
  • ¥15 关于#目标检测#的问题:大概就是类似后台自动检测某下架商品的库存,在他监测到该商品上架并且可以购买的瞬间点击立即购买下单