0

文字列の配列リストがあります。この配列に「i」よりも多くの要素があるかどうかを特定の瞬間に確認したい場合は、その要素を削除します。例えば。配列に 5 つの要素があります。インデックスが 4 の要素を選択します。より高い要素が存在するかどうかを確認し(この場合、インデックスが5の要素になります)、その要素を削除します。3 要素を選択した場合、4 要素と 5 要素を削除します。私はそのようなことをします:

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

このソリューションは、3 つの要素を選択して 2 つの要素を削除した場合にうまく機能します。しかし、4つの要素を選択したい場合、インデックスが範囲外の例外を取得します。どうすれば問題を解決できますか?

4

5 に答える 5

2

コードでforループを使用する意味がよくわかりません。

おそらくあなたがしたいことは、リストのi番目の要素を超えたアイテムを削除することです。

最も簡単な方法は、リストから最後の要素を繰り返し削除することです。

参考のためのサンプルコードは次のとおりです。

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

配列に 5 つの要素があります。インデックスが 4 の要素を選択します。

5 番目の要素のインデックスは 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 に答える