我一直在爲此工作了很多年。我有一個數組列表,其中許多字符串在一個索引中。數組列表刪除索引
(索引0)品牌是:日產顏色是:黑色ID是:KL1門是:4
(索引1)品牌是:福特顏色是:紅色ID是:LL0門是:4
我希望用戶只輸入ID,它應該刪除索引中的全部數據。 不幸的是迭代器不會在這裏工作。任何想法如何做到這一點?
我一直在爲此工作了很多年。我有一個數組列表,其中許多字符串在一個索引中。數組列表刪除索引
(索引0)品牌是:日產顏色是:黑色ID是:KL1門是:4
(索引1)品牌是:福特顏色是:紅色ID是:LL0門是:4
我希望用戶只輸入ID,它應該刪除索引中的全部數據。 不幸的是迭代器不會在這裏工作。任何想法如何做到這一點?
您應該創建將包含這些數據相關的車的類。以下面的代碼爲例。我已經使用內部遍歷列表的Java 8
功能。
public class Main {
public static void main(String[] args){
List<Car> list = new ArrayList<>(Arrays.asList(new Car("Nissan", "Black", "KL1", "4"),
new Car("Ford", "Red", "LL0", "4")));
String id = "KL1";
list.removeIf(i -> i.getID().equals(id));
list.forEach(System.out::println); // show the list after operation
}
static class Car {
public final String Brand;
public final String Colour;
public final String ID;
public final String Door;
public Car(String brand, String colour, String ID, String door) {
Brand = brand;
Colour = colour;
this.ID = ID;
Door = door;
}
public String getBrand() {
return Brand;
}
public String getColour() {
return Colour;
}
public String getID() {
return ID;
}
public String getDoor() {
return Door;
}
}
}
更新
你也可以做,通過這樣
public static void main(String[] args){
List<Car> list = new ArrayList<>(Arrays.asList(new Car("Nissan", "Black", "KL1", "4"),
new Car("Ford", "Red", "LL0", "4")));
String id = "KL1";
// Following code will find and remove the match from the list.
// this for loop do exactly what it is doing "list.removeIf(i -> i.getID().equals(id));"
for (int i = 0; i < list.size(); i++) {
if (list.get(i).getID().equals(id)) {
list.remove(i);
break;
}
}
}
這是用這個代碼得到的輸出[Car @ 15db9742,Car @ 6d06d69c] – tomaszsvd
使用基本的面向對象的方法。
創建一個類來表示每一行數據,包含四個成員字段:品牌,顏色,ID,門。
解析每行文本以實例化該類的一個對象。在List
中收集對象。
循環列表並詢問每個對象的id以匹配您想要的id。
對於添加/刪除項目的速度,請使用LinkedList
而不是ArrayList
作爲List
的實施。
如果選擇使用迭代器,那麼由於除O(n)(攤銷)以外的任何其他操作都不能保證清除(至少)清除,所以後備數據結構幾乎不起作用。 – Makoto
將數據存儲在字符串中讓我想起了80年代的美好時光。遵循Basil Borque的建議,然後爲了避免併發修改的失敗,從數組的末尾開始。這樣,你可以從列表中刪除,並繼續前一個,而不是下一個(這將導致異常)
爲本:這是爲什麼一個ArrayList的'',而不是一個ArrayList的''?該數據應該是一個具有屬性'{String品牌,字符串顏色,字符串id,int doorCount}'或類的類,帶有'toString()'方法來生成您顯示的文本。在使用數據時,它不應該是單個字符串......在id上移除變得幾乎簡單得多。 –