如何从java中的List中删除元素

时间:2014-09-08 19:21:28

标签: java android arrays

这是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.
}

有人可以帮我解决这个问题吗?

4 个答案:

答案 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将列表作为输入,并复制内部元素。