1

问:删除列表中存储的某些元素,而其他列表中存在索引?例如。列表 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

不确定您是否仍需要答案/建议。

您可以创建一个新列表并添加第二个列表中不存在的索引,而不是删除。然后只需更改参考。在您的情况下,如果列表中有多个“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 回答