列表上的retainAll()在java中导致错误
我对java中的retainAll()有一些问题。我有一个如下所示的有效列表。但是,当我尝试使用retailAll()查找两者之间的交点时,会导致以下错误列表上的retainAll()在java中导致错误,java,list,collections,set,Java,List,Collections,Set,我对java中的retainAll()有一些问题。我有一个如下所示的有效列表。但是,当我尝试使用retailAll()查找两者之间的交点时,会导致以下错误 String[] a = {"3", "3", "10", "4", "2", "8"}; String[] b = {"10", "4", "12", "3", "23", "1", "8"}; List<String> aList = Arrays.asList(a); Lis
String[] a = {"3", "3", "10", "4", "2", "8"};
String[] b = {"10", "4", "12", "3", "23", "1", "8"};
List<String> aList = Arrays.asList(a);
List<String> bList = Arrays.asList(b);
aList.retainAll(bList);
谢谢
数组。asList
返回固定大小的列表。因此不能添加或删除元素
使用接受集合的ArrayList
构造函数
List<String> aList = new ArrayList<>(Arrays.asList(a));
List-aList=newarraylist(Arrays.asList(a));
错误在于提供的列表没有实现所需的方法。这可能是因为Arrays.asList只是一个用于处理重要函数的存根列表。您可能需要执行以下操作
List<String> aList = new ArrayList<String>(Arrays.asList(a));
List<String> bList = Arrays.asList(b);
aList.retainAll(bList);
List-aList=newarraylist(Arrays.asList(a));
List bList=Arrays.asList(b);
保留列表(bList);
详细说明一下:数组返回的实现。asList()
实际上返回数组的List
视图。如果调用者保留了对数组的引用,他可以通过列表
包装器查看内容更改。这就是为什么它是固定大小的;这个实现不能抛弃它的支持数组而创建一个更大的数组,就像ArrayList
那样。
List<String> aList = new ArrayList<String>(Arrays.asList(a));
List<String> bList = Arrays.asList(b);
aList.retainAll(bList);