从数组列表中删除元素

时间:2010-11-25 12:44:43

标签: java arraylist

考虑我有一个数组列表,如:[2,5,1,8,6] 我希望从1删除所有元素直到结束。并且arraylist将像:[2,5] 我怎样才能做到这一点? 感谢

5 个答案:

答案 0 :(得分:3)

List<Integer> list = Arrays.asList(2, 5, 1, 8, 6);
boolean remove = false;
Iterator<Integer> it = list.iterator();
while (it.hasNext() {
   if (!remove && it.next() == 1) {
      remove = true;
   }
   if (remove) {
      it.remove();
   }
}

答案 1 :(得分:3)

值得注意的是,您无法在Arrays.asList()中添加/删除,但您可以这样做。

List<Integer> list = Arrays.asList(2, 5, 1, 8, 6);
int idx = list.indexOf(1);
if (idx>=0) list = list.subList(0, idx);

答案 2 :(得分:0)

list = list.subList(0, 1);

答案 3 :(得分:0)

从ArrayList中删除元素的最有效方法是从列表末尾删除它们。从列表中间删除的每个元素都会导致后面的所有元素都为{{ 3}}。如果列表很大,则可能会导致严重的性能问题。

但是,在您的情况下,您可能最好只创建一个包含剩余两个元素的新moved to the left

答案 4 :(得分:0)

另一种方法是简单地在List的末尾弹出项目,直到我们弹出起始元素。每个项目都可以在O(1)时间内弹出,因此整个操作都是O(n)。

class Main{
    private static List<Integer> inputs = new ArrayList<Integer>();

    public static void main(String args[]){
        for (int x: new int[]{2,5,1,8,6})
            inputs.add(x);
        System.out.println(inputs);
        int start=inputs.indexOf(1);
        if (start>=0){ //check if there is a 1 in input
            while (inputs.size()>start)
                inputs.remove(inputs.size()-1);
        }
        System.out.println(inputs);

    }
}