考虑我有一个数组列表,如:[2,5,1,8,6]
我希望从1
删除所有元素直到结束。并且arraylist将像:[2,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);
}
}