如何从列表中删除值<selectitem> </selectitem>

时间:2013-10-09 10:40:46

标签: java

如何从List<SelectItem>删除“abcd”的值。

public class Sample {
public static void main(String[] args) {
    List<SelectItem> list= new ArrayList<SelectItem>();

    list.add(new SelectItem("abc"));
    list.add(new SelectItem("abcd"));
    list.add(new SelectItem("abcdf"));

    System.out.println("size  :"+list.size());
    System.out.println("List  :"+list);
    list.remove(new SelectItem("abcd"));
    System.out.println("List :"+list.size());


}
}

9 个答案:

答案 0 :(得分:3)

试试这个:

list.remove(1);

其中1是索引。这将删除此列表中指定位置的元素。

如果您想要根据state这样删除元素:

list.remove(new SelectItem("abcd"));

您必须覆盖SelectItem类的.equals().hashCode()方法,因为: remove(Object o)在内部使用.equals()来比较列表中是否存在该元素,如果存在,则会删除第一次出现的new SelectItem("abcd")

答案 1 :(得分:1)

使用此:

    SelectItem selectItem = new SelectItem();
    selectItem.setValue("abcd");
    list.remove(selectItem); // Just call the remove method
    // If present, it'll remove it, else, won't do anything

答案 2 :(得分:1)

似乎是SelectItem doesn't implement equals()。我能看到的唯一选择是迭代每个元素并确定索引,然后使用ArrayList#remove(int index)

答案 3 :(得分:1)

您需要使用Iterator并遍历您的列表。每当你找到匹配项(我认为你可以使用SelectItem的getValue()方法)时,使用迭代器将其删除。

由于您无法更改equals()的{​​{1}}方法,请使用此类迭代器

SelectItem

答案 4 :(得分:1)

似乎SelectItem没有实现等于&amp; hashCode方法正确。在这种情况下,您可以遍历列表并删除相应的项目,或者保留对实际选择项目的引用并直接删除该引用。

答案 5 :(得分:0)

为了让您编写的代码,您需要实施equals()的{​​{1}} 方法。

来自SelectItem方法的java文档:

remove

在提供的条件中注意 o.equals(get(i))部分。

换句话说 - removes the element with the lowest index i such that (o==null ? get(i)==null : o.equals(get(i))) 的实现搜索要删除的特定对象。如何判断某个项目是否是请求的对象?当然,它使用ArrayList方法,如果项目等于您提供的项目,则只有它被移除。

请注意:为了与其他收集操作保持一致,您还需要实施equals()方法,使其与hashCode()一致方法

答案 6 :(得分:0)

在JSF的上下文中,SelectItem是UISelectOne中的有效选项,当您使用仅带参数的构造函数时,参数设置为Value。

试试这段代码:

public SelectItem getItem(List<SelectItem> items, Object value) {

    for (SelectItem si : items) {
        if (si.getValue().equals(si)) {
            return si;
        }
    }
    return null;

}

并像这样使用:

    list.remove(getItemToRemove(list, "abcd");

这不会在迭代时修改列表,它会返回所需的元素,然后您可以将其删除或根据需要使用

干杯

答案 7 :(得分:0)

试试这段代码,

public SelectItem getItemToRemove(List<SelectItem> items, SelectItem item) {
    for (SelectItem si : items) {
        if (si.getValue().equals(item.getValue())) {
            return si;
        }
    }
    return null;
}

答案 8 :(得分:0)

尝试这种逻辑,

    for (int i = 0; i < list.size(); i++) {
        if (list.get(i).getValue().toString().equals("abcd")) {
           list.remove(i);
           System.out.println(i); //checking the element number which got removed
        }
    }