这是reg。我需要在java中从List中删除元素的要求。当我尝试从List中删除元素时,我得到了不受支持的异常。以下是代码:
String[] str_array = {"abc","def","ght"};
List<String> results = Arrays.asList(str_array);
String tobeRemovedItem="";
for(int i=0;i<results.size();i++){
if(results.get(i).equalsIgnoreCase(searchString)) {
tobeRemovedItem=results.get(i);
}
}
if(!TextUtils.isEmpty(tobeRemovedItem)) {
results.remove(tobeRemovedItem); // I am getting exception here.
}
有人可以帮我解决这个问题吗?
答案 0 :(得分:2)
Arrays.asList
返回的列表类型不支持remove
操作。因此例外。
您可以改为使用java.util.ArrayList
。
List<String> results = new ArrayList<String>(Arrays.asList(str_array));
答案 1 :(得分:1)
已回答,但现在没有.asList()
List<String> results = new ArrayList<>();
Collections.addAll(results, str_array);
.asList由数组支持,因此您可以修改原始数组来修改列表。反之亦然,你不能增长或缩小列表,因为需要交换支持的数组对象,因为数组是在java中修复的。
答案 2 :(得分:0)
Arrays.asList
返回的列表大小无法更改。相反,你可以这样做:
List<String> results = new ArrayList<>(Arrays.asList(str_array));
答案 3 :(得分:0)
通常,UnsupportedOperationException
由接口(或具有抽象方法的类的子类)的实现抛出,其中实现者不希望支持该特定方法。
也就是说,要在将来调试这些问题,请检查您正在使用的实施 - 在这种情况下,它是通过Android sdk中的Arrays.asList()
方法提供的。在这里,您可以看到它表示它不支持在列表中添加或删除项目。
如果必须添加和删除项目,可以将调用包装到List的ArrayList实现中, 支持这样的修改(如Banthar和khelwood所建议的那样)。 constructor将列表作为输入,并复制内部元素。