0

我有字符串的数组列表。如果在这个数组中我有比我的“i”更多的元素,我想检查特定时刻,如果是,我想删除这些元素。例如。我在数组中有五个元素。我选择索引为四的元素。我想检查是否存在更高的元素(在这种情况下,更高的元素将是索引为 5 的元素)并删除该元素。如果我选择 3 元素,我想删除 4 和 5 元素。我做这样的事情:

            for(int j = 0; j<descriptions.size();j++){
                if(!descriptions.get(i+1).isEmpty()){
                    descriptions.remove(i+1);
                }
            }

当我选择 3 个元素并删除了两个元素时,此解决方案效果很好。但是当我想选择 4 个元素时,我会得到索引超出范围的异常。我怎样才能解决我的问题?

4

5 回答 5

2

我不太明白在代码中使用 for 循环的意义。

您可能想要做的是删除列表中第 i 个元素之外的任何项目。

最简单的方法是重复从列表中删除最后一个元素。

这是一个示例代码供参考:

while(descriptions.size() > i){
  descriptions.remove(descriptions.size()-1);
}
于 2013-02-14T07:50:43.420 回答
0

我在数组中有五个元素。我选择索引为四的元素。

第五个元素在索引 4 处。如果要选择第 4 个元素,它的索引将为 3。

修改您的代码如下:

int size = descriptions.size();
for(int j = size -1; j>choosenNum; j--) 
{
    descriptions.remove(j);
}
于 2013-02-14T07:44:18.873 回答
0
        for(int i = descriptions.size()-1; i > indexToDeleteAfter; i--){
                descriptions.remove(i);
        }

或者,遵从 ArrayList:

if(descriptions.size() - 1 > indexToDeleteAfter)
{
   descriptions.removeRange(indexToDeleteAfter + 1, descriptions.size() - 1);
}

http://docs.oracle.com/javase/1.4.2/docs/api/java/util/ArrayList.html#removeRange(int,%20int)

于 2013-02-14T07:48:02.703 回答
0
 public static void main(String[] args) {

 //list of string with 5 elements
 List<String> descriptions = new ArrayList<String>();
 descriptions.add("first");
 descriptions.add("second");
 descriptions.add("third");
 descriptions.add("4");
 descriptions.add("5");

 //the size you want to check for the list
 int i = 3;
 int howMuchToRemove = descriptions.size()-i;
 //if the list how more object from > i , we will remove objects from it 
 if (howMuchToRemove > 0)
     for (int j=0 ; j < howMuchToRemove ; j++)
         //remove the last object in the list
         descriptions.remove(descriptions.size()-1);

 System.out.println(descriptions.toString());
}
于 2013-02-14T07:51:53.537 回答
0
 public static void main(String[] args) {
    ArrayList<String> list = new ArrayList<String>();
    list.add("a");
    list.add("a");
    list.add("a");
    list.add("a");
    list.add("a");
    indexToRemove(list, 5);

}

private static void indexToRemove(ArrayList<String> list, int index) {
    if (list.size() > index) {
        list.remove(index);
        System.out.println(index + "th item removed");
    } else
        System.out.println("Can't remove");

}

您的意思是一个将删除给定索引元素的函数?然后试试这个。

于 2013-02-14T07:53:33.693 回答