Java 数组列表删除索引
我已经在这方面工作了很长时间了。我有一个数组列表,其中许多字符串在一个索引中 (指数0)品牌为:日产颜色为:黑色ID为:KL1车门为:4Java 数组列表删除索引,java,arraylist,Java,Arraylist,我已经在这方面工作了很长时间了。我有一个数组列表,其中许多字符串在一个索引中 (指数0)品牌为:日产颜色为:黑色ID为:KL1车门为:4 (索引1)品牌为:福特颜色为:红色ID为:LL0门为:4 我希望用户只输入ID,它应该删除索引中的所有数据。 不幸的是,迭代器在这里不起作用。你知道怎么做吗?OOP 使用基本的面向对象方法 创建一个类来表示每行数据,包含四个成员字段:品牌、颜色、id、门 解析每行文本以实例化该类的对象。收集列表中的对象 循环列表并查询每个对象的id以匹配所需的id 为了加快添
(索引1)品牌为:福特颜色为:红色ID为:LL0门为:4 我希望用户只输入ID,它应该删除索引中的所有数据。 不幸的是,迭代器在这里不起作用。你知道怎么做吗?OOP 使用基本的面向对象方法 创建一个类来表示每行数据,包含四个成员字段:品牌、颜色、id、门 解析每行文本以实例化该类的对象。收集
列表中的对象
循环列表并查询每个对象的id以匹配所需的id
为了加快添加/删除项目的速度,请使用链接列表
而不是数组列表
作为列表OOP的实现
使用基本的面向对象方法
创建一个类来表示每行数据,包含四个成员字段:品牌、颜色、id、门
解析每行文本以实例化该类的对象。收集列表中的对象
循环列表并查询每个对象的id以匹配所需的id
为了加快添加/删除项目的速度,请使用LinkedList
而不是ArrayList
,因为实现List
将数据存储在字符串中会让我想起80年代的美好时光。遵循Basil Borque的建议,然后,为了避免concurrentmodificationexception,从数组的末尾开始。这样,您就可以从列表中删除数据并继续使用上一个,而不是下一个(这会导致异常)将数据存储在字符串中让我想起了80年代的美好时光。遵循Basil Borque的建议,然后,为了避免concurrentmodificationexception,从数组的末尾开始。通过这种方式,您可以从列表中删除并继续使用上一个,而不是下一个(这将导致异常)您应该创建一个类,该类将包含与汽车相关的数据。以下面的代码为例。我使用了java8
特性,可以在列表中进行内部迭代
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;
}
}
}
公共类主{
公共静态void main(字符串[]args){
列表列表=新的ArrayList(Arrays.asList)(新车(“日产”、“黑色”、“KL1”、“4”),
新车(“福特”、“红色”、“LL0”、“4”);
字符串id=“KL1”;
removeIf(i->i.getID().equals(id));
list.forEach(System.out::println);//操作后显示列表
}
静态级轿车{
公共最终字符串品牌;
公共最终字符串颜色;
公共最终字符串ID;
公共门;
公共汽车(字符串品牌、字符串颜色、字符串ID、字符串门){
品牌=品牌;
颜色=颜色;
this.ID=ID;
门=门;
}
公共字符串getBrand(){
回归品牌;
}
公共字符串getColor(){
返色;
}
公共字符串getID(){
返回ID;
}
公共字符串getDoor(){
回程门;
}
}
}
更新
你也可以这样做
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;
}
}
}
publicstaticvoidmain(字符串[]args){
列表列表=新的ArrayList(Arrays.asList)(新车(“日产”、“黑色”、“KL1”、“4”),
新车(“福特”、“红色”、“LL0”、“4”);
字符串id=“KL1”;
//以下代码将从列表中查找并删除匹配项。
//这个for循环完全执行它正在执行的操作“list.removeIf(i->i.getID().equals(id));”
对于(int i=0;i
您应该创建一个类,该类将包含与汽车相关的数据。以下面的代码为例。我使用了java8
特性,可以在列表中进行内部迭代
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;
}
}
}
公共类主{
公共静态void main(字符串[]args){
列表列表=新的ArrayList(Arrays.asList)(新车(“日产”、“黑色”、“KL1”、“4”),
新车(“福特”、“红色”、“LL0”、“4”);
字符串id=“KL1”;
removeIf(i->i.getID().equals(id));
list.forEach(System.out::println);//操作后显示列表
}
静态级轿车{
公共最终字符串品牌;
公共最终字符串颜色;
公共最终字符串ID;
公共门;
公共汽车(字符串品牌、字符串颜色、字符串ID、字符串门){
品牌=品牌;
颜色=颜色;
this.ID=ID;
门=门;
}
公共字符串getBrand(){
回归品牌;
}
公共字符串getColor(){
返色;
}
公共字符串getID(){
返回ID;
}
公共字符串getDoor(){
回程门;
}
}
}
更新
你也可以这样做
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;
}
}
}
publicstaticvoidmain(字符串[]args){
列表列表=新的ArrayList(Arrays.asList)(新车(“日产”、“黑色”、“KL1”、“4”),
新车(“福特”、“红色”、“LL0”、“4”);
字符串id=“KL1”;
//以下代码将从列表中查找并删除匹配项。
//这个for循环完全执行它正在执行的操作“list.removeIf(i->i.getID().equals(id));”
对于(int i=0;i
如果选择使用迭代器,则支持数据结构无关紧要,因为O(n)(摊销)之外的任何东西都不能保证删除(至少)。如果选择使用迭代器,则支持数据结构无关紧要,因为O(n)(摊销)之外的任何东西都不能保证删除(至少).最重要的:为什么这是ArrayList
而不是ArrayList
?该数据应该是一个具有属性{String brand、String color、String id、int doorCount}