2013-02-14 56 views
0

我有字符串的數組列表。我想在特定時刻檢查,如果在這個數組中我有更多的元素比我的「我」,如果是的話我想刪除那些元素。例如。我有五個元素在數組中。我選擇索引是四的元素。我想檢查是否存在更高的元素(在這種情況下,更高的元素是索引是5的元素)並刪除該元素。如果我選擇3元素,我想刪除4和5元素。我這樣做:檢查數組列表並刪除一些參數

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

當我選擇3元素和兩個元素被刪除時,此解決方案工作良好。但是當我想要選擇4元素時,我會得到索引超出限制的異常。我如何解決我的問題?

+0

你不能從i + 1開始,因爲你從0開始 – 2013-02-14 07:41:05

+3

@Nirav:首先,他不能刪除'i + 1',因爲計數器名爲'j' :) – 2013-02-14 07:42:21

回答

2

我不太清楚在代碼中使用循環的要點。

你可能想要做的是刪除列表中第i個元素之外的任何項目。

最簡單的方法是反覆從列表中刪除最後一個元素。

下面是一個示例代碼,以供參考:

while(descriptions.size() > i){ 
    descriptions.remove(descriptions.size()-1); 
} 
0

我有五個元素在數組中。我選擇索引是四的元素。

第五元素位於索引4.如果你想選擇第四元素,它的指數將是3

修改代碼如下:

int size = descriptions.size(); 
for(int j = size -1; j>choosenNum; j--) 
{ 
    descriptions.remove(j); 
} 
+0

這個解決方案沒有刪除任何元素 – user1302569 2013-02-14 07:48:53

+0

請。現在檢查。我使用'size'而不是'choosenNum'作爲循環條件。 – Azodious 2013-02-14 07:52:54

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()); 
} 
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"); 

} 

你的意思是一個函數,它會刪除指定的索引元素?然後試試這個。

相關問題