我想删除一个数组的三个元素(索引0,1和2),然后将接下来的三个元素移入索引0,1,2。由于某种原因,数组没有删除正确的元素
ArrayList <String> tryThis = new <String>ArrayList();
tryThis.add("first");
tryThis.add("second");
tryThis.add("third");
tryThis.add("fourth");
tryThis.add("fifth");
tryThis.add("sixth");
tryThis.add("seventh");
tryThis.add("eighth");
tryThis.add("Ninth");
System.out.println(tryThis.get(0) + tryThis.get(1) + tryThis.get(2));
tryThis.remove(0);
tryThis.remove(1);
tryThis.remove(2);
System.out.println(tryThis.get(0) + tryThis.get(1) + tryThis.get(2));
我希望在删除之前打印“第一,第二和第三”,然后再打印“第四,第五和第六”。但是,它会打印“第一个第二个第三个”,然后在删除后打印“第二个第四个第六个”。为什么呢?
答案 0 :(得分:0)
删除索引0处的元素后,前一个索引1元素将转移到索引0,依此类推。所以你应该在索引0删除三次:
tryThis.remove(0);
tryThis.remove(0);
tryThis.remove(0);
答案 1 :(得分:0)
remove(0)
方法通过删除列表的第一个(索引0)元素来更改列表,因此所有其他元素的索引也会更改。尝试拨打remove(0)
三次以获得您期望的结果。
答案 2 :(得分:0)
你有两种可能性。
您可以运行以下代码3次(例如,使用for循环):
tryThis.remove(0);
或者,您以相反的方式运行代码:
tryThis.remove(2);
tryThis.remove(1);
tryThis.remove(0);
请记住,使用remove(int index)
,它会移除此列表中指定位置的元素,并将所有后续元素移到左侧(从索引中减去一个)。
P.s:如前所述,您应该使用正确的语法:
ArrayList <String> tryThis = new ArrayList<String>();
类型很明显(隐含的,在你的情况下和使用中),你也可以离开第二个<String>
:
ArrayList <String> tryThis = new ArrayList<>();
答案 3 :(得分:0)
删除时,按降序删除。 来自源代码: 删除此列表中指定位置的元素。 将任何后续元素向左移位(从其中减去一个元素) 指数)。
public static void main(String[] args) {
ArrayList <String> tryThis = new <String>ArrayList();
tryThis.add("first");
tryThis.add("second");
tryThis.add("third");
tryThis.add("fourth");
tryThis.add("fifth");
tryThis.add("sixth");
tryThis.add("seventh");
tryThis.add("eighth");
tryThis.add("Ninth");
System.out.println(tryThis.get(0) + tryThis.get(1) + tryThis.get(2));
int i[] = {2,1,0};
for (int j = 0; j < i.length; j++) {
tryThis.remove(i[j]);
}
System.out.println(tryThis.get(0) + tryThis.get(1) + tryThis.get(2));
}