1

Q:他のリストに存在するインデックスを使用して、リストに保存されているいくつかの要素を削除しますか? たとえば。リスト 1 には a、b、c、d、e があり、リスト 2 には 0,2 がある場合、a と c を削除する必要があります。

私はこれを実装しましたが、これがどれほど効率的で効率的かはわかりません

public class RemoveByIndexFromOtherList {

    public static void main(String[] args) {
        List<String> lOriginal = new ArrayList<String>();
        lOriginal.add("a");
        lOriginal.add("b");
        lOriginal.add("c");
        lOriginal.add("d");
        lOriginal.add("e");

        List<Integer> indexes = new ArrayList<Integer>();
        indexes.add(0);
        indexes.add(2);
        List<String> elemToRemove = new ArrayList<String>();

        for (Integer index : indexes) {
            String b = lOriginal.get(index.intValue());
            elemToRemove.add(b);
        }

        for (String s : lOriginal) {
            if (elemToRemove.contains(s)) {} 
            else {
                System.out.println(s);
            }
        }
    }
}

これをかなり効率的なレベルに改善する方法を教えてください

4

1 に答える 1

0

まだ回答/推奨事項が必要かどうかわかりません。

削除する代わりに、新しいリストを作成して、2 番目のリストにないインデックスを追加できます。そして、参照を変更するだけです。あなたの場合、リストに複数の「a」がある場合、それらはすべて削除されます。

提案:

import java.util.ArrayList;
import java.util.List;

public class RemoveByIndexFromOtherList {

    public static void main(String[] args) {
        List<String> lOriginal = new ArrayList<String>();
        lOriginal.add("a");
        lOriginal.add("b");
        lOriginal.add("c");
        lOriginal.add("d");
        lOriginal.add("e");
        lOriginal.add("a");

        List<Integer> indexes = new ArrayList<Integer>();
        indexes.add(0);
        indexes.add(2);

        List<String> newListOriginal = new ArrayList<String>();

        for(int i = 0; i<lOriginal.size(); i++){
            if(!indexes.contains(i)){
                newListOriginal.add(lOriginal.get(i));
            }           
        }
        lOriginal = newListOriginal;

        for(String str: lOriginal){
            System.out.println(str);
        }

    }
}
于 2013-03-27T01:50:18.157 に答える