从列表中删除元素

时间:2012-01-27 18:09:32

标签: java list

我有2个列表,根据参数,我从2个列表中的1个中删除了一个元素。然后我遍历列表以进行其他处理。但是,即使列表丢失了1个元素,list.size()仍然相同,导致java.lang.IndexOutOfBoundsException。我能做些什么来解决这个问题吗?

    System.out.println(high_list_price.size());

    if(first_hit.equals("low")){
        high_list_date.remove(high_list_date.size()-1);
        high_list_price.remove(0);
        high_list_percent.remove(0);
    }
    if(first_hit.equals("high")){

        low_list_date.remove(low_list_date.size()-1);
        low_list_price.remove(0);
        low_list_percent.remove(0);
    }

    System.out.println(high_list_price.size());

    for(int tt = 0;tt < low_list_date.size();tt++){
        System.out.println(low_list_date.get(tt)+"|"+low_list_price.get(tt));
    }

    for(int ii = 0; ii < high_list_date.size();ii++){
        System.out.print(high_list_date.get(ii)+"|");
        System.out.println(+high_list_price.get(ii));
    }
.remove之前和之后

high_list_price.size()= 51,但是high_list_date.size()从51变为50,为什么会这样?

3 个答案:

答案 0 :(得分:2)

如果向后遍历ArrayLists,则可以删除当前元素,而不必担心后面会发生什么 另一种选择是迭代,制作要删除的内容列表,然后从原始列表中删除这些元素。

答案 1 :(得分:1)

作为@ z5h提供的有效选项的补充,请考虑使用Iterator接口,其中包含remove()方法,该方法从基础集合中删除项目而不会导致各种问题使用Collection.remove()原因。

使用Iterator可能会帮助您以更易读的方式浏览您的馆藏。

答案 2 :(得分:0)

您可能希望使用ArrayList而不是普通数组。它提供了其他功能,如remove(Object o)